include<stdio.h>int main{int x=1,y=1,z=1; while(--z>-1&&x++<2) y=y-1; printf("%d,%d,%d\n",x,y,z);}

求答案和详细解答

第1个回答  2012-08-26
--z是先加减后引用,所以z变为0,--z最后结果为0;所以0>-1等于1;
x++是先引用后加减,所以x++最后结果为1,而x变为2;所以1<2等于1;
所以就是while(1);执行下面的语句;
y计算结果为0;
所以答案为x=2,y=0,z=0.
第2个回答  2012-08-26
一楼回答大部分正确,但是最后结果一行不对,第二次进入while后,先进行--z,此时,z先减后引用,z值已变为-1,不满足-1>-1,而同时在c语言中,&&前面若不满足的话就不会判断后面的x++<2了,因此跳出循环,答案是x=2,y=0,z=-1本回答被提问者采纳
第3个回答  2012-08-26
答案2,0,-1
还有,程序是错的,漏洞百出
#include<stdio.h>
int main()
{
int x,y,z;
x=1;y=1;z=1;
while(--z>-1&&x++<2)
y=y-1;
printf("%d,%d,%d\n",x,y,z);
return 0;
}

...{ int x=1,y=1,z=1; if (x--==1&&y++==1||z
答案是:x=0,y=2,z=1 先x--==1&&y++==1 x--==1结果是TRUE x的值是0,y++==1结果是TRUE y的值是2,&&这个符号如果左边为FALSE,就不用计算右边的表达式,如果是TRUE,就要计算右边的式子,那么x=0,y=2,x--==1&&y++==1的结果就是TRUE,||这个式子左边为TRUE那么右边的就不计...

#include <stdio.h> main() { int x=1, y=2, z=3; if(x>y) if(y<z...
if(y<x)不成立,不执行下面。直接执行else printf(“%d,x++),所以结果为1

C语言问题,int x=1,y=1,z=1; --x&&(--y||--z) xyz的值是多少?_百度知 ...
y=1 z=1 原因是:--x && (--y || --z) 中,&& 是逻辑与运算符。程序运行时会先判断 && 左边的部分,如果左边部分为真,再判断右边部分。左边的部分是 --x ,也就是让 x 先自减 1,即 x 为 0 ,逻辑运算时 0 被当作 "假" 来处理。逻辑与运算时有一项为假,结果必为假,因而...

int x=1,y=1;为什么做了z=1||x++&&y-- 之后y=1,x=1,z=1
故而此处x++和y--都没有执行,x和y的值仍然是原值,仅z值被赋值为1

int x=1,y=1,z=1;cout<<++x&&y--||++z; 请问cout的结果是什么?为什么...
结果不为1就是0 ++x && y-- ++x的结果为2 ,由于后面是y-- 所以先进行逻辑与再将y减1 所以 ++x && y-- 的逻辑结果为 1 而后面是个逻辑或运算 对于逻辑或运算,前面已经是1了,后面的就不会再执行了,因为结果已经定了!最后输出1 x = 2 y = 0 z = 1 ...

int x=1,y=1,z=1;cout<<++x&&y--||++z; 请问cout的结果是什么?谢谢...
++x && y-- ++x的结果为2 ,由于后面是y-- 所以先进行逻辑与再将y减1 所以 ++x && y-- 的逻辑结果为 1 而后面是个逻辑或运算 对于逻辑或运算,前面已经是1了,后面的就不会再执行了,因为结果已经定了!最后输出1 程序结束后x y z 的值分别为:x = 2 y = 0 z = 1 ...

#include<stdio.h> void main() { int x,y,z;x=y=1;z=(++x)+(++y)+...
z=(++x)+(++y)+(x++);原式相当于z=n1+n2+n3 先执行n1=++x 执行后,x=2,n1=2 再执行n2=++y 执行后,y=2,n2=2 然后是n3=x++ 执行后,n3=2,x=3 最后为z=2+2+2 得z=6

int x = 1,y = 1,z = 1; 执行++x||++y&&++z x, y, z值分别是多少 &&优...
执行后: x = 2, y = 1, z = 1 && 优先级 大于 || 没错,上面的语句可这样理解:++x || (++y && ++z)之所以将 y z 括起来,是因为 && 优先级高,但是 执行的时候,先判断 ++x 大于 0,|| 后面的就都不用执行了。

...x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z; printf("%d,%d",x,y...
这里涉及到运算符的优先级及||的短路特性——当然此处没出现那种情况。优先级 "<=" > "||" > "=" 故先执行y--<=x( 2<=1)为0 (执行该表达时后y再自减,y变为1) 再执行x+y!=z(1+1!=3) 为1 最后执行总的表达式 即x=0||1(x变为1) 当然输出1和1了 ...

设有int x=1,y=1,z=1,c;则执行语句c=--x&&--y||--z;后,x,y,z的值分...
第一部分:--x&&--y 第二部分:第一部分值||--z;--x 为前置运算,先将x值减1后,再参与运算,则结果为0;根据优化,第一部分后面的--y就不运算了,值仍然为1。第一部分的值为0。再计算第二部分。0 ||--z;z 的值还要减1,变为0。最终逻辑表达式的值为0。

相似回答