简单的C语言题 详细解答 谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:00:14
由于刚开始学不是很懂 所以请详细解答一下谢谢
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);

其中 (a=b,b+3) 计算的顺序是什么? 是先做a=b 还是先做b+3
老师讲逗号是从左至右计算 可这道题为什么要从右(b+3)至左(a=b)?
谢谢大家 详细说一下 万分感谢

这道题目,也是从左到右算的.即先(a=b)后(b+3).
因为逗号的优先级别低于赋值号,所以顺序如下:
1、a-=a-5……结果a=5
2、c=5……结果c=5
3、a=b……结果a=0
4、b+3……没有影响abc中任何一个
所以最后,a=0,b=0,c=5
注意:逗号的优先级是最低的,而括号是最高的。

(a=b,b+3) 计算顺序为先b+3后a=b 此表达式的结果为b+3=3;
括号是最高优先级
逗号是最低优先级
算术运算符优先级高于逗号优先级
所以...
不难理解了
咯咯

(a=b,b+3) 计算的顺序是先计算a=b,再计算b+3,
整个(a=b,b+3)的值是b+3的值,
逗号运算是从左至右依次计算每个表达式,最后的结果是最右边的表达式的值
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
最后的结果是a=0,b=0,c=3
运算的顺序的先计算(a-=a-5)得出a=0-(0-5)=5,再计算a=b=0,最后计算b+3=3;整个逗号表达式的值是3,然后赋给c,所以c=3

对于这道题目,先(a=b)后(b+3).
因为逗号的优先级别低于赋值号,所以顺序如下:
1、a-=a-5 即a=a-(a-5) a=5;
2、c=a 即 c=5;
3、a=b,结果a=0;
4、b+3的值是3;
所以最后,a=0,b=0,c=5 ;
整个逗号表达式的值为 3 即“ c=(a-=a-5),(a=b,b+3) ”的值为3;
逗号的优先级是最低的。