在C++中,如果输入f= --x || y-- && z++;请求输出z时Z等于2,为什么f= --x||--y &&z++;时输出的Z等于1呢?

谢谢各位大牛了,因为老师不情愿讲解,只能求助你们了!

这个在于你的y值。因为在c++表达式中,逻辑运算会出现“短路”现象。
比如y=1,z=1,则y--&&z++的时候,y=1为真,就会计算z++,z就变成了2;
而--y&&z++的时候,y=1先变成了0,而0表示假,&&运算符后面的表达式就不会处理了,因此z++根本就不执行,因此z还保持原来的值,为1!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-16
因为运算符优先级&&是高于||的,所以f= --x || y-- && z++可以认为是f= --x || (y-- && z++),还有就是表达式运算会出现“短路”,如果--x为真,显然f就为真了,(y-- && z++)不用计算,z保持原值,这是编译器自己的优化方法。如果--x为假,则继续计算y--,若为假,则z++不用计算了,因为(y-- && z++)肯定为假,若y--为真,则继续计算z++的值~
第2个回答  2011-10-16
如果 你的y等于1的话 你的y先减再赋值 所以 你(--y&&z )执行前面的就不执行了 所以你的z美经过z++就出来了 所以 z=1
第3个回答  2011-10-16
你能告诉我 x y z的初值吗??

...y-- && z++;请求输出z时Z等于2,为什么f= --x||--y &&z++;时输出的...
这个在于你的y值。因为在c++表达式中,逻辑运算会出现“短路”现象。比如y=1,z=1,则y--&&z++的时候,y=1为真,就会计算z++,z就变成了2;而--y&&z++的时候,y=1先变成了0,而0表示假,&&运算符后面的表达式就不会处理了,因此z++根本就不执行,因此z还保持原来的值,为1!

c++编程中--x&&++y&&++z是什么意思
所以++y不会算,且(--x&&++y)的值是0 而0 && ++z同样的,右边不用算,所以结果x,y,z就分别是 0,1,1了

C语言++x&&--y&&z++怎么理解?
如果x的新值不为0,继续执行--y,先将y的值自减1,如果y的新值为0,说明--y返回false,不再执行后续语句(后面z的值不会变),整个表达式也返回false;如果y的新值不为0,继续执行z++,先判断,如果z的值不为0,则表达式返回true,z变为z+1;如果z的值为0,则表达式返回false,z仍变为z+...

问到C++的题目,若有x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是? 还有...
(x<y?x:y)==z++值是false = 是赋值操作符 比如定义一个变量 int x; 则x值是未被赋值的,x有可能是任何值。x=0就将0赋值给x,意味着变量x的值是0。== 是判断两个值是否相等 如x=1, y=2,则x==y即为1==2,为false

--x&&++y&&++z 这个语句怎么理解
前自增前自减优先级比&&高,所以是这样:(--x)&&(++y)&&(++z);即对x自减,y、z自增的结果进行逻辑与运算

4) 用c++编程;输入一字符,将字符的ASCII码值用二进制形式输出;
从output.txt读入就需要用到我们C++的一个类ifstream。它专门用来从文件当中读入数据的。其用法为:ifstream in ("xxx.txt");这里in是一个标识符,可以是任何合法的名称,xxx.txt是文件名称。这样,我们就可以用这个对象去完成你的任务了。第二次审查后,我的程序简略了很多。ifstream in("output.txt...

C语言中,++x||++y&&++z的意思是?还有++x&&++y&&++z???
2,++x&&++y&&++z 先给x +1, 若不等于0,计算右边,给y +1若不等于0,计算右边,给z +1若不等于0表达式不等于0;否则整个表达式为0;3,x++&&--y&&z--||--x 先看x 是否为0,如果不为0,x +1;计算右边,先给y-1,若不为0,计算右边,判断z是否为0,不为0,表达式(x++&&--...

求一个用于表白的C语言或C++的程序,谢谢大家了
printf("答应我吧!\\n输入yes,你可以看到我的真心\\n");scanf("%s", answer);float y, x, z, f;for (y = 1.5f; y > -1.5f; y -= 0.1f){ for (x = -1.5f; x < 1.5f; x += 0.05f){ z = x * x + y * y - 1;f = z * z*z - x * x*y*y*y;put...

C语言的--x&&++y||++z要怎么理解
?二、&& 和 || 有断路特性 && 当遇到 0时,不再运行其后的同级运算 || 当遇到 1时,不再运行其后的同级运算 如:int x=1, y=2 ;--x&&++y ; 这句执行完成后,x=0, y依然是2 如:int y=0, z=2;++y||++z ; 这句执行完成后,y=1 z依然是2 ...

C语言中的++,--问题
4.0+(++a)=0+1=1 \/\/ 前置运算符先运算,结果使a变为1 ,所以结果sum=1 运算后,a的值还要做两个运算,先--再++所以不变,仍为1 以上流程是计算机中VC6.0汇编产生的真实流程,可以自行参考汇编代码 在VS2005下的结果是4 2+1+0+1=4,所以VC6.0的结果是比较令人费解的 ...

相似回答