c++问题。。。

[复制链接]
查看11 | 回复3 | 2008-12-19 21:17:22 | 显示全部楼层 |阅读模式
假定下列x和y均为int型变量,则不正确的赋值为()。

A. x+=y++
B. x++=y++
C. x=++y
D. ++x=++y
那个是正确答案呀?
顺便给解释一下。。
感激不尽。。。。

回复

使用道具 举报

千问 | 2008-12-19 21:17:22 | 显示全部楼层
自己用VC试试即可知,答案为B,B选项错误出错信息为error C2106: '=' : left operand must be l-value意思即"="左边必须为一个有效的左值,而x++不是左值。x++的本意是使用x的值,在使用后将x自加1,那么如果把x++用在赋值运算的左边的话,赋值时是赋给原先的x还是自加后的x呢?显然是未定义的,所以这种操作是错误的。...
回复

使用道具 举报

千问 | 2008-12-19 21:17:22 | 显示全部楼层
B 因为:赋值运算需要左值,而x++不是左值。x++的本意是使用x的值,在使用后将x自加1,那么如果把x++用在赋值运算的左边的话,赋值时是赋给原先的x还是自加后的x呢?显然是未定义的,所以这种操作是错误的。...
回复

使用道具 举报

千问 | 2008-12-19 21:17:22 | 显示全部楼层
Bx++是一个表达式,而且++放在=之前所做操作未定义表达式是不能做为赋值运算的左值的。至于++x那很显然前++优于=,++x表达式先返回x值,然后用自增后的x作为左值。...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行