c语言;设整型变量a,b,c,均为2,则a+++b+++c++????

我的意思是这么算
a+(++b)+【++(c++)】
为什么不对呢

。。。你这个写法有错误吧
是这样的c++这个操作,返回的是右值,而++c这种操作要求c必须是左值。所以++(c++),把右值赋给了前++所以错了

楼上说的不对 你把三个加号连着写 具体是当成 ++ + 还是 + ++,这个是看编译器是从左还是从右开始匹配的,所以规范起见加括号,有些程序员则喜欢打空格分开追问

左?? 右??,我刚学,不明白

追答

至于题目d=a+++b+++c++
我的电脑编译器是从左匹配的,它找到一个加号会继续找有木有下一个加号,所以会当成
(a++)+(b++)+(c++)
若a,b,c都位2最后a,b,c,d分别3,3,3,6

左值简单说就是具体的变量,可以在等号左边的值,右值简单说就是只能在等号右边的值,一个。。普通的临时值。因为 c++这个操作的内部实现是,把变量加1并返回加1之前的值,所以(c++)返回的是一个值而不是c这个变量,所以不能被++c 就像你不能(++2)一样

额。。。这样说你懂了么

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-19
(a++)+(b++)+(c++),因为++优先级高于+,所以应该这样算。最终结果为6.
第2个回答  2014-03-19
我只能说,这是课本讲的,任何时候你去一家公司,你要敢写这样的代码,你就不干了,还有,这个跟编译器有很大的关系,GCC和VS下的结果都有可能不同
相似回答