int a =3; int b=++((++a)--); 这样计算b的值为什么不对啊

[复制链接]
查看11 | 回复5 | 2013-1-26 20:13:59 | 显示全部楼层 |阅读模式
无论在C还是C++中,这都是一个非法的表达式C语言(至少C99之前,C11的话我不是很清楚)中自增自减运算符的操作对象都必须是左值,并且无论运算符是前缀还是后缀,其表达式的结果都是右值所以如果这是段C代码你会发现两个errorserror C2105: '--' needs l-valueerror C2105: '++' needs l-value但是C++(C++没有系统学习过,只是自学,所以不敢很肯定,要是有说错,请哪位大牛更正)中的规定是后自增运算和后自减运算的结果为右值表达式,先自增运算和先自减运算的结果为左值表达式所以如果这段是C++代码,只会有一个errorerror C2105: '++' nee...
回复

使用道具 举报

千问 | 2013-1-26 20:13:59 | 显示全部楼层
(++a)--到这里都不会错的,但此语句返回的不是左值,于是对于再次使用++,就错了。另外说明下,对于++和--,前缀时返回左值,后缀时返回的是数值,不是左值。...
回复

使用道具 举报

千问 | 2013-1-26 20:13:59 | 显示全部楼层
楼上回答的很好了。我只有一个建议,别这样写代码,搞再清楚也没用,浪费自己时间。你看到是哪本书还是网上的题目,都可以扔了。...
回复

使用道具 举报

千问 | 2013-1-26 20:13:59 | 显示全部楼层
这种题没有意义,现实中不会有这样的代码,就像“段誉出家当了和尚却被尼姑抢了男朋友”一样...
回复

使用道具 举报

千问 | 2013-1-26 20:13:59 | 显示全部楼层
++a=4,a--=4,++a=5...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行