int x = 1, y = 0;
x-->(y+x)?5:25>y++?'1':'2';
表达式先运算后面的条件运算符即 25 > y++? '1':'2',得到结果为'1',而y的值应该变成了1,为何测验后整个表达式运行完后,y的值为0?而且把x--改成x,y的值居然又变成1
int x = 1, y = 0;
x-->(y+x)?5:25>y++?'1':'2';
表达式先运算后面的条件运算符即 25 > y++? '1':'2',得到结果为'1',而y的值应该变成了1,为何测验后整个表达式运行完后,y的值为0?而且把x--改成x,y的值居然又变成1
因为x-->(y+x)所以第一个判断表达式的值就是5了 后面不执行y++
x-- 左边是1 右边是0+0(x--先使用再自减)
1大于0成立 输出1
去掉-- 左边是1 右边是0+1
不成立
所以y++执行
y最后是1
#include <stdio.h>
#include <string.h>
int main()
{
int x = 1, y = 0;
printf("%d",x-->(y+x)?5:25>y++?'1':'2');
return 0;
}