为什么这个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);

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.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-29
优先级 () > = >,

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

最后a=0;b=0;c=5
第2个回答  2015-06-29
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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网