过地址对temp进行操作.(换句话说就是不能作为左值),因为temp是一个临时变量 ++i=5;是正确的就是因为其返回值就是i;
因为a++在表达式中的意思是a+1而不是a=a+1。
b = ++ a 相当于a = a +1, b = a 为什么a++不能做左值 a++返回的是自身的值副本,所以不能作为左值 int int::operator++(int) { int oldvalue = *this; ++*this; return oldvalue; } ++a 返回的是a加1后自身的引用 int& int::operator ++() { *this = *this+1; return *this; } 一...
a是数组,不是指针。就算要看成指针,也是const指针,是无法作为左值的。
语法规定就是这样的,而且也没意义,先++了再被赋值,之前的++都白做了。
a++是将一个变量a作为左值,这是可以的。而++(a++)是将a++的值作为右值,常量值是非法的右值,所以不可以。C++中的“++” (自增)、 “--” (自减)运算符是使用方便且效率很高的两个运算符,它们都是一元运算符。这两个运算符都有前置和后置两种使用形式。当“/”用于两整型操作数相除时...
a++是一个表达式,且并不是变量。a++仅存在一个临时空间用于保存表达式的运算结果,该临时空间并不能被修改,故其不能作为赋值类型运算符的左值。如(a+b)=c是不合法的表达式,因为(a+b)只有运算结果而不能被赋值,故不能作为赋值符号的左值 ...
右值:不能对其进行更改;左值:可以对其进行赋值等操作。总之,a++返回的是右值:该值是变量a的一个副本,该副本变量没有名字,因此不能对之进行自增运算,因为它占有的空间马上就释放掉了。++a直接把a加上1然后保存在a中,该过程没有产生临时变量,对++a的访问仍然是在访问a变量,因此还可以继续...
(a=b)括号起来代表一个结果,右边c=9后,把9这个数赋给左边,而数字不能赋值给数字(一个常量),就好像15=9?
A错误,因为a++操作通过临时量返回其值,该值是一个常量,因此不能被修改(不是左值),而后缀++需要对左值进行操作,所以会引起编译错误。 所谓的左值,说通俗一点就是可以被修改和引用的值,左值可以取地址。与之相对的就是右值。在使用时,左值可以作为右值,但右值不能作为左值。