首先要搞清楚的是,什么是左值,什么是右值。这里给出左值右值的定义:
1、左值是可以出现在等号(=)左边的值,右值是只能出现在等号右边的值。
2、左值是可读可写的值,右值是只读的值。
3、左值有地址,右值没有地址。
a,根据左值右值的第二定义,值的左右性就是值的常量性——常量是右值,非常量是左值。比如:
1=1;//Error
这个复制操作在C++中是语法错误,MSVC给出的错误提示为“error C2106: ‘=’ : left operand must be l-value”,就是说’=’的左操作数必须是一个左值,而字面常数1是一个右值。可见,严格的区分左值右值可以从语法分析的角度找出程序的逻辑错误。