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+...

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;

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

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

因为你让 z = (x==1) && (y=2) 也就是当 x==1 时 对y赋值 同时z=真即为1 可是x!=1 也就是x==1 为假 后面的就不在执行 所以 y仍为0 你想让y=2 可以改写成 z = (x==1) || (y=2) 就好了 此时 z=1 y=2

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

只是等于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对。

#includefun(intx){inty=0;staticintz=3;z++;++y;printf("%d",z);return(x+y+z);}intmain(){inti,x=2;for(i=0;i

【分析】 z+=x>y?++x:++y 该表达式执行分为两个过程: 1). x>y?++x:++y 这个表达式的运算符为 A?b:c,即根据逻辑表达式A的真假情况返回表达式b或c. 若A为真(即A运算结果非0),则返回表达式c;若为0,则返回表达式c. 因此x>y++x:++y的意思是判断x>y的...

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