两个7是怎么算出来的呢 求解析

结果为7,9,7
int a,b,c;
int x=5,y=10;
a=(--y==x++)?--y:++x;
b=y++;
c=x;
printf("%d,%d,%d",a,b,c);

  • a=(--y==x++)?--y:++x;
    这一句先看括号里面,--y是说“y先减1,再用y的值”,所以y变成9,然后看x++,是“先用x的值,也就是5,再让x加1”,所以括号里是判断(9==5),显然这俩不相等,所以执行冒号后面的那一句,此时x为6,y为9,执行冒号后面那句++x,就是先让x加1,再用x的值,所以x变成7,此时就把7赋值给了a
  • b=y++;
    这句是先用y的值(也就是9),再让y加1,所以b=9
  • c=x;
    这句就是c=x=7
    所以a b c分别为7 9 7

有用请点个采纳~~

a:a=(--y==x++)?--y:++x; 这句话由于x++不等于--y因此返回++x,此时前面口号里的x++已经加上了,同时又加上一个++x,故a=x+2=7
b:前面计算a时,括号里面进行了一次--y,这里y++返回9
c:就是x,没什么好说的