设x、y和z都是int型变量,m为long型变量,则在16位微型机上执行下面赋值语句后

设x、y和z都是int型变量,m为long型变量,则在16位微型机上执行下面赋值语句后,y值为( ),z值为( ),m值为( )。
y=(x=32767,x-1);
z=m=oxffff;
z为什么等于-1呀?

在16位微型机上面int是16bit,long是32bit。最后一句
z=m=oxffff;

先执行 m=oxffff; m的值是65535 (就是16进制 ffff )
由于m是long,所以没有溢出,正常。
z是int型,把m的值赋值给z,就会溢出,
z的范围是-32768~32767,
符号位为1,表示z是负数,
负数一般取补码格式,即 取反码再加1,
ffff的反码是0,加1就是1,表示绝对值是1,
所以z的值是-1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-10-16
为啥y为32766呢?编译出-1啊
相似回答