C 语言表达式怎么解z+=x>y?x++:y++这里运算顺序是怎么样的
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 12:06:56
C 语言表达式怎么解
z+=x>y?x++:y++
这里运算顺序是怎么样的
z+=x>y?x++:y++
这里运算顺序是怎么样的
+=,-=类似这样的符号,都是=号右边的是一个整体,可以理解成打了括号.也就是等同于这样的表达式.
z=z+(x>y?x++:y++);
=的优先级最低.括号中是一个三目表达式,先判断x>y的结果,成立则x++, 不成立则y++; 则表达式演变为:
z=z+x++; 或 z=z+y++;
现在就明白了吧, 先算z=z+x,然后x+1, 或者先算z=z+y, 然后y+1.
再问: 那这输出的z是不是不包含y+1的 就是顺序 z=z+y,y=y+1 还是z=z+y,y=y+1,z=z+1
再答: 要么z=z+y, y=y+1 要么z=z+x, x=x+1 执行哪个,要看x,y的值,然后通过比较x>y的。确实z的值不包括y+1或x+1的,因为++是后置的。z先算完再做y+1或x+1. 如果是++x,++y则不一样。
再问: 那输出是z+=x>y?x++:y++ printf("z= %d",z) 和printf(“z+=x>y?x++:y++ = %d",z+=x>y?x++:y++) 的输出结果不一样么
再答: 是一样的, 我怀疑你两句都执行了, 没有注释前面的, 导致x, y的值变了。因为你前面x和y可能某个加了1的。 后面再printf肯定不一样了。 你现在是不是结果相差了1? 那就是正常的。 你打印后面的那种printf的时候把前面两句注释掉。不然要么x++,要么y++了。
再问: 难道是这答案错了么 我怎么算都是10 x=6,y=6,z=3 printf(“z+=x>y?x++:y++ = %d",z+=x>y?x++:y++) 怎么算出来答案是9 最后的y++ 是不是这样就是10了 x=6,y=6,z=3 printf(“z+=x>y?x++:y++ = %d",z+=x>y?x++:y++) printf("z= %d",z)
再答: 当然是9了, 前面我说得很清楚了, ++是后置的, z=z+y++是先算出z=z+y的值,自然是9了,然后再是y=y+1, 那y变成7.
z=z+(x>y?x++:y++);
=的优先级最低.括号中是一个三目表达式,先判断x>y的结果,成立则x++, 不成立则y++; 则表达式演变为:
z=z+x++; 或 z=z+y++;
现在就明白了吧, 先算z=z+x,然后x+1, 或者先算z=z+y, 然后y+1.
再问: 那这输出的z是不是不包含y+1的 就是顺序 z=z+y,y=y+1 还是z=z+y,y=y+1,z=z+1
再答: 要么z=z+y, y=y+1 要么z=z+x, x=x+1 执行哪个,要看x,y的值,然后通过比较x>y的。确实z的值不包括y+1或x+1的,因为++是后置的。z先算完再做y+1或x+1. 如果是++x,++y则不一样。
再问: 那输出是z+=x>y?x++:y++ printf("z= %d",z) 和printf(“z+=x>y?x++:y++ = %d",z+=x>y?x++:y++) 的输出结果不一样么
再答: 是一样的, 我怀疑你两句都执行了, 没有注释前面的, 导致x, y的值变了。因为你前面x和y可能某个加了1的。 后面再printf肯定不一样了。 你现在是不是结果相差了1? 那就是正常的。 你打印后面的那种printf的时候把前面两句注释掉。不然要么x++,要么y++了。
再问: 难道是这答案错了么 我怎么算都是10 x=6,y=6,z=3 printf(“z+=x>y?x++:y++ = %d",z+=x>y?x++:y++) 怎么算出来答案是9 最后的y++ 是不是这样就是10了 x=6,y=6,z=3 printf(“z+=x>y?x++:y++ = %d",z+=x>y?x++:y++) printf("z= %d",z)
再答: 当然是9了, 前面我说得很清楚了, ++是后置的, z=z+y++是先算出z=z+y的值,自然是9了,然后再是y=y+1, 那y变成7.
C 语言表达式怎么解z+=x>y?x++:y++这里运算顺序是怎么样的
C语言中x+=y+=z的运算思路是怎么样的?
C语言中,z=x+a%3*(int)(x+y)%2/4;的运算顺序是什么?
C语言中,z=x+a%3*(int)(x+y)%2/4;的运算顺序是什么?谢...
C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/2的值是?
写出数学式x/y+z 的C语言表达式
C语言y+=(x++,z++) 求具体运算过程
C语言的一个计算题设int =2,y=4,z=6,表达式!(z>y>x)+(y!=z)||(x+y)&&(y-z)的值是
数学式X小于等于Y小于等于Z的c语言表达式是?
C语言测试练习已知int x=1,y=1,z=1;则表达式x++++y+++z++的值是?
(C语言)若变量x、y、z均为double类型且已正确赋值,不能正确表示x/y乘z的C语言表达式是?
C语言 若int x=0,y=2,z=5;则下列表达式值为假的是() A 'x'&&'y' B x