main() { int x=4,y=3; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y;} } 为什么输出答案是2 2 4

真诚向你们求助,请快点回答

根据运算符优先级,a=(--x==y++)?--x:++y等价于a=(((--x)==(y++)))?(--x):++y,首先判断x=x-1与y值的是否相等,y+1,若相等,则a=--x(--x先x=x-1,然后用于计算)。此时,x=2,y=4。a=2
b=x++,将x的值赋给b,然后x=x+1,所以b=2,x=3.
c=y,所以c=4。
在写代码的时候,最好将表达式中的不同优先级的计算用括号括起来,这样就不用为优先级问题而烦恼了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-14
是求abc吧?电脑上也说不清楚,自己多看书吧,很基础的,应该是符号的优先级问题

...int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; cout<<a<<b<<c...
所以--x==y++ 为真,所以 a=--x=8 b=x++; 先取x的值8,再将其值加1,所以b=8,x=9 c=y=10 所以最后结果就是8 8 10 主是理解前增(前减)和后增(后减)区别,++x和x++的区别在于++x先把x的值加1,再取其值,而x++是先取其值,再把值加1 a?b:c的意思是a成立,则执...

...y=9,a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; printf("a=_百度...
--x==y \/\/表达式结果为真,即为1 y++ \/\/y变为10 问号之前结果为真,执行--x,x变为8,所以a=8 b等于x++执行之前的值,即b=8,然后x变为9 c等于y,即c=10

C语言中a=(--x==y++)?--x:++y;什么意思
这是一个三目运算符,如果 --x 与 y++相等的话,把--x的值赋给a,否则,将++y的值赋给a;在这里,--x是先对x进行自减1再执行语句,y是再执行完语句再执行y自加1,也就是说现在解析出来的表达式为 x - 1 == y ,后面同理!

...a,b,c; a= (x- -=y++)?x- -:y++; b=x++; c=y; 求a,b,c 答案10,9...
因为x和y不等,所以a=y++。这个式子相当于a=y,y+1(该懂了吧)。这个过后a=10,y=11。然后b=x++,相当于b=x,x+1。这个过后b=9,x=10。然后c=11。手机打的……累啊

c语言:int x=6,y=5;a=(--x==y++)?x:y+1;a=5的原因
()里--X先X自减1,此时X=6-1=5 然后X先和Y比较是否相等,然后Y才+1;所以()里的==结果是真;当?号前面结果为真时,执行:号前面的表达式;所以a=x=5

执行以下的程序段后,a= ,b= 。 int x
先判断x==y++ 先取值 再自加. 于是是判断 3==2 不成立. y自加为3.执行后面一个y++; 先取值, 表达式值是3. y自加为4.b=x++;先取值, b=3, x自加为4.于是 a=3, b=3

c语言中int a=2,printf("%d%d%d",--a,a++,--a)输出结果是什么...
int x,a,b;x=0;a=++x; \/\/a=1;++x是先增值再用,即先做x+1,在做a=x 本题中,相当于先后计算--a,a++和--a,我们可以这样看 int a=2,b,c,d;b=--a;c=a++;d=--a;首先,b=--a时是先做a自减操作(即a=a-1)再赋值给b的,所以b=1,a=1;然后,c=a++是...

...main() { int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf("y=%d,x...
如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10 但这是错的,这儿还有赋值运算符.赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6,我也是...

...main() { int x = 4; do { printf("%2d", x--); }while(!x); }...
4,C正确,选C——因为输出4后!x就是!4==0,就结束循环了。

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

相似回答