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

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

3,2,0 因为 || 运算符检测到第一个表达式结果为 true(非零值返回 true) 时会忽略后面的表达式。

3,2,0

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

首先是给x,y,z均赋值为0; 接下来++x是对x先加值后使用,则此时x=1; 然后就是“与操作”(由于“与操作”的优先级高于“或操作”,所以先进行:++x&&++y),这时候由于“&&”前面的值是1,所以会计算“&&”后面的值,结果y自加后值为1,即y=1; 接下来进...

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

x=1 y=0 z=0 从左向右执行 1.++x 导致x=1 2. 1||任何表达式,都不用计算了所以 ++y和++z都没有执行

根据运算符优先级/结合性,原式等效于 (++x>y++&&z++) || z++ 对于子表达式++x>y++,表达式结果为真,且导致x和y各自增1 由于&&左侧表达式值为真,故执行右侧,z++,值为假,且z自增1 子表达式++x>y++&&z++值为假,仍需判断||右侧表达式z++ 最终x和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呢?那是因为运算级别的问题,根据运算级别,实现算括号里面的先...

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