当前位置: 代码迷 >> C语言 >> [求助]逗号表达式的问题
  详细解决方案

[求助]逗号表达式的问题

热度:175   发布时间:2006-07-19 15:58:47.0
怎么说?a++难道和a=a+1在本质上不是一样吗?
我承认这两者间是有区别的。包括++a在内。
----------------解决方案--------------------------------------------------------
以下是引用fanslichen在2006-7-18 23:51:24的发言:

一:a=3*5,a*4整个表达式的值是60
二:1 :(a=3*5,a*4),a+5 是先计算出A的值是15
2 :进行a*4的运算得60(但a值未变,仍为15)
3 :进行A+5得20,即整个表达式的值为20 
而第二题为什么最后的答案不是65 而第2部为什么a不变仍是15
到底用法是怎么回事?
请大家帮帮忙!

逗号表达式的值取最右边的结果,然而运算的顺序从左往右执行。
如此,分析第一题:a=3*5,a*4
所以表达式是先把a赋值为15,然后进行a*4的运算,所以,表达式的结果为60;
第二题,左边同样是把a赋值为15,至于a*4的运算有没有执行,这无关紧要(实际上它不执行,在编译优化的时候会去掉该部分),然后执行右边部分a+5,所以表达式的值为15+5.
不知楼主明白没?

[此贴子已经被作者于2006-7-19 16:07:28编辑过]


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-19 09:50:03
nuciewth

来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9791
专家分:183
注 册:2006-5-23
  得分:0 
我想让楼上的解释一下a++ 的执行过程.谢谢.
----------------解决方案--------------------------------------------------------
以下是引用穆扬在2006-7-19 17:50:03的发言:

1.注意你在4楼是怎么说的
“如果a的值要改变,就得要有赋值表达式了。”
2.你已经承认“这两者间是有区别的”
我不知道你究竟还想表达什么

我不知道形式上的差别算不算两者之间的区别.其实我所说的区别重点是在说a++,和++a 之间的区别.
我想对这样的问题我们还是少钻牛角尖吧.
呵呵


----------------解决方案--------------------------------------------------------
(a=3*5,a=a*4),a+5 这样就可以算出65.
----------------解决方案--------------------------------------------------------
这样表达式是65,a=60
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

表达式的值和变量的值要搞清楚


----------------解决方案--------------------------------------------------------
前面两位说的很好,表达式的值和A的值是两回事,

请好好的考虑一下。

不过这题看优先级有可以看出来,逗号的优先级最低,逗号

前面是一个表达式,后面也是一个啊,自左至右怎么可能A的值变化呢?
----------------解决方案--------------------------------------------------------
  相关解决方案