C程序,求详细的解释。

[复制链接]
查看11 | 回复3 | 2012-12-30 10:36:02 | 显示全部楼层 |阅读模式
c=(a-=a-5),(a=b,b+3);(a-=a-5),(a=b,b+3);这个是逗号表达式,应该从左到右依次计算,他的值就应该是第一个项目(a-=a-5)的值,也就是说c的值就应该等于(a-=a-5)而表达式a-=a-5是一个复合赋值运算符,相当于a=a-(a-5)而且a=a-(a-5)这个赋值语句的值,就应该是被赋值的变量a的值,由于a初值为0,a=a-(a-5)运算后a的值就成了5,所以c的值是5.逗号表达式的左一项解决,接着看下在这个表达式:(a=b,b+3),这两句就好理解了a=b;b+3;由于b初值为0,那么a=b之后,a的值就从5变成0b+3不改变任何值,所以b值不变,是初始的0...
回复

使用道具 举报

千问 | 2012-12-30 10:36:02 | 显示全部楼层
c=(a-=a-5),(a=b,b+3);if(a>b,b>c,c>d)逗号表达式与加减乘除本质上是一样的, 它的求值是从左向右依次对表达式求值, 整个表达式的结果取逗号表达式中最后一个表达的的结果, 如果非零, 就会使 if 成立!依照上面的理论c=(a-=a-5),(a=b,b+3)的执行顺序是这样的:1、首先分两块,逗号前面的是...
回复

使用道具 举报

千问 | 2012-12-30 10:36:02 | 显示全部楼层
首先是一个逗号语句,C 是跟逗号的第一个语句的值相等,但是,语句的执行顺序是从左到右。这句的意思就是c=(a-=a-5),(a=b,b+3); 执行顺序就是c=(a-=a-5);a=b;b+3; 按照这个顺序我们知道c=(a-=a-5);这句执行完后 c = 5a = 5 后面一句是a=b这句执行完后 a = b ...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行