C语言问题

[复制链接]
查看11 | 回复5 | 2009-4-20 17:19:04 | 显示全部楼层 |阅读模式
由于刚开始学不是很懂 所以请详细解答一下谢谢
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

回复

使用道具 举报

千问 | 2009-4-20 17:19:04 | 显示全部楼层
(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...
回复

使用道具 举报

千问 | 2009-4-20 17:19:04 | 显示全部楼层
逗号表达式注意两个基本知识:1. 逗号表达式的运算顺序是从左向右运算2. 逗号表达式的值取逗号中最右表达式的值回答你的补充,先做a = b详细点:看看整条语句c=(a-=a-5),(a=b,b+3); 由于"="的优先级高于逗号,因此首先执行c=(a-=a-5), c 就等于5了,(a=b,b+3)里面是先执行a = b, 然后在执行...
回复

使用道具 举报

千问 | 2009-4-20 17:19:04 | 显示全部楼层
这道题目,也是从左到右算的.即先(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 注意:逗号的优先级是最低的,而括号是最高的。...
回复

使用道具 举报

千问 | 2009-4-20 17:19:04 | 显示全部楼层
这个和编译器有关。不用管的。...
回复

使用道具 举报

千问 | 2009-4-20 17:19:04 | 显示全部楼层
二楼的对...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行