mshd.net
当前位置:首页 >> 设有以下程序段int x=2,y=2,z=0,A; A=++x||++y&&z+... >>

设有以下程序段int x=2,y=2,z=0,A; A=++x||++y&&z+...

int x=2,y=2,z=0,a; a=++x||++y&&z++; //上面等价于 x++; a= x || (++y&&z++); 由于x>0, 而右边是 || 所以 不会运行 (++y&&z++) printf(″%d,%d,%d\n″,x,y,z); //结果是 3,2,0

x 3 y 2 z 0 还有测试就能得到答案

&&优先级高于||,所以可以这样写: a=++x||(++y&&z++); a=3||(3&&0); a=3||0; a=1; z++遇;号才自加,++x和++y先进行自加。 x=3,y=3,z=1;

a=++z; b=++y; c=++x; c||(a&&b);

3,2,0

0 ++x是1 ||的运算方式是只要前面为1,则后面不进行运算,结果肯定唯一 ++y && ++z这些实质上是没有运行的语句

||是逻辑或运算符,你的程序中判断a=++x || ++y && z++; 当++x为真,则判断整个表达式为真,所以++y && z++都不会执行了, 你可以改变x = -1,看看效果,这时++x为假,会执行++y && z++ ,结果为031; &&和||类似,判断++y为假时就不会执行后面...

只是等于1的,我是经过turbo c2.0编译过的,答案应该没什么问题的,程序是: main() { int x,y,z,k; x=3;y=4;z=5; k=0; k=!(x+y)+z-1&&y+z/2; printf("%d",k);} 答案为什么会等于1呢?那是因为运算级别的问题,根据运算级别,实现算括号里面的先...

答案: ACDE 1是 0x0001,2是0x0010,3是0x0011。 x & y = 0, x & y & z = 0。 所以A对。 x | y = 3, x | y | z = 3。 所以B错。 自己 ^ 自己 = 0, 所以 C对。 D 3 >> 2 向右移2位,结果是0。 所以D对。 E x & 0xff00 = 0. 所以E对。

答案是C。 A、是定义变量的同时给变量赋初值,只允许对单个变量赋初值。即int x=0,y=0,z=0 B、自增自减运算符的操作数只允许是变量,不能是表达式 D、求余运算符操作数只允许是整型数据

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com