为什么这个C语言程序会输出 0,0,5 ?

int a = 0,b=0,c=0; c = (a -= a - 5),(a=b,b+3); printf("%d,%d,%d尀n",a,b,c);
2025-02-25 23:21:24
推荐回答(3个)
回答1:

int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d\n”,a,b,c);

按程序运行来讲吧。
第一句不说了...
第二句为逗号表达式。
c=(a-=a-5)
给c赋值,把a-=a-5的结果赋给c;
(a-=a-5)=(a=a-(a-5));
把a=0;代入得a=5;
进而(a-=a-5)的值为5;
c=5;

接下来执行(a=b,b+3);
这里面又有逗号表达式。
a=b;因b=0;故a=0;
b+3;不对任何变量赋值,相当于空语句;

综上所述:a=0;b=0;c=5.

回答2:

优先级 () > = >,

所以第一步
(a -= a - 5) 运算完 a=5
c=a=5
第二步
a=b ,此时 b还是0 所以 a又变为0 ;b+3没有用途

最后a=0;b=0;c=5

回答3:

a -= a - 5 ----->a = 5;

c = (a -= a - 5)---->c=a=5;

a=b --------------->a=b=0;

b+3--------------->这应该是个空运算,b不改变,头次看到~~
所以a=0,b=0,c=5