hanyf 发表于 2024-1-1 09:31:07

条件运算符

int x=10,y=9;
int,a,b,c;
a=(--x==y++)?--x:++y;
b=x++;
c=y;
请问执行程序段后,a,b,c的值分别是多少,y的值是怎么变化的

FishC 发表于 2024-1-1 09:31:14

执行程序段后:

1. 先执行 --x,x的值变为9;
2. 再执行 y++,y的值变为10;
3. 判断 (--x == y++) 是否为真,即判断 9 == 10 是否为真,结果为假;
4. 执行 ++y,y的值变为11;
5. a的值为 ++y,即11;
6. 执行 x++,x的值变为10;
7. b的值为之前的 x 的值,即9;
8. c的值为当前的 y 的值,即11。

所以,a的值为11,b的值为9,c的值为11。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-1-1 10:08:24

      int x = 10 , y = 9   ;
      int a , b , c          ;
      x --                   ; // x = 9
      y ++                   ; // y = 10
      if(x == y-1) a = x --; // x = 9 , y - 1 = 9 , x == y - 1 条件为真,执行 a = x --,a = 9 , x = 8
      else a = y ++          ; // 不执行
      b = x                  ; // b = 8
      x ++                   ; // x = 9
      c = y                  ; // c = 10

hanyf 发表于 2024-1-1 10:33:00

jackz007 发表于 2024-1-1 10:08


感谢,但其实我主要是想弄清楚这一步是怎么运行的 a=(--x==y++)?--x:++y;

jackz007 发表于 2024-1-1 11:02:48

hanyf 发表于 2024-1-1 10:33
感谢,但其实我主要是想弄清楚这一步是怎么运行的 a=(--x==y++)?--x:++y;

      第3-6行就是在分解这个表达式。

hanyf 发表于 2024-1-1 21:59:10

jackz007 发表于 2024-1-1 11:02
第3-6行就是在分解这个表达式。

明白了,谢谢
页: [1]
查看完整版本: 条件运算符