若有定义"int x=4,y=5;”,则表达式"y>x++? x- - : y++"的值为5,为什么?

如题所述

我运行过这个程序,x=4,y=5是不是你的答案错了,因为运算符的优先级是>比? : 高,所以先执行y>x++,而且x++是后置运算符,先执行运算再+1,所以先比较y=5比x=4大,然后x+1=5,然后执行三目运算符? :当三目运算符是真的时候执行冒号前面的语句,假的时候执行冒号后面的语句,因为之前判断y>x是真所以执行x- -。因为x+ +后等于5,现在执行x- -所以是4
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-20
(y>x++)这一句的计算顺序是先比较后自增,所以答案是(5>4)值为真,所以整个式子的值等于(x--),现在来看看x的值了。
最先定义时x=4,在(y>x++)中自增一次变成5,然后又自减一次,所以x最后为4,故整个式子的值为4,希望你在检查下,最后在机器上运行下
第2个回答  推荐于2018-04-05
y>x++? x- - : y++
如果用printf输出上式的结果printf("result = %d", y>x++? x- - : y++)
相当于
if (y>x)
{
x++;
printf("result = %d", x);
x--;
}
else
{
printf("result = %d", y);
y++;
}本回答被提问者和网友采纳

若有定义"int x=4,y=5;”,则表达式"y>x++? x- - : y++"的值为5,为什 ...
因为x+ +后等于5,现在执行x- -所以是4

关于c++的问题。int x=4,y=5 表达式y>x++?x--:y++。。。的值是_百度...
这是个问号表达式,如果y大于x则执行x--反之执行y++,但是执行之前都会执行x++;那么此时x==,y==,比较是比较的x++之前的值,所以执行x--;此时x==5,但是先执行x,所以表达式的值为5,之后x==4y==5;

x=4 y=5 i= ++x= =5 || ++y= =6 求助运算后y=? 并说明原因,非C++专业...
++x==5 || ++y==6 由于x初始值为4,所以子表达式++x的值为5,显然++x==5,为真 又由于||运算符的短路效应,由于左操作数为非零,所以右侧没有必要进行判断,即被短路,所以y仍然是原值5

在c语言中,int x=4,y=5,z;则z=++x*y--的值为
如果是考试,则相当于(++x)*y即为5*5=25

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

int x=3,y=5,printf("%d,%d\\n",(x--,--y),x++);中(x--,--y),的输出...
老师经常会拿它来讲这个知识点,就是括号里是以后面那个数输出的,前面那个数是多少不用管它,我个只输出最后一个数,然后,因为前面括号里面X--已经运算过了,得x=2,然后后面那个X++可以看作这样X=X+1因为X先赋值给X,然后再实行加一,所以结果,X等于2,所以结果是 4,2 ...

x,y都是整型变量,x=1,y=2,printf("%d",x+y,x++,y++)的值为什么是5
结果是3

已知有int x=5,分别执行表达式y=x++和y=++x后,y 的值分别为( )?
y=x++ 出来的应该是5 x++是你这条运行完之后x才变成6, 另外一个出来的是6,++x是先加1在赋值

执行int x=4,y; y=x++;后x的值为 ,y的值为 .
首先y=x++,先执行y=x,再执行x++,所以 y=4,x=5

假设所有变量均为整型,则表达式(x=2, y=5, y++, x+y)的值是()
写入的值。这条规则有效地限制了只有能确保在修改之前才访问 变量的表达式为合法。例如 i = i+1 合法, 而 a[i] = i++ 则非法 (参见问题 3.1)。如上所述,逗号表达式是一个序列点,所以x+y时y++的副作用已生效,这时候y=6,x+y=8,表达式最后的值是8....

相似回答