c++的“++ --”

来源:百度知道 编辑:UC知道 时间:2024/05/09 02:38:36
初学请教:
int a=4;
(a++) += a; (++a) += (a++);
哪个不对?为什么?最好能详细解释下。谢谢。

(a++) += a; 这个是错的,因为a++返回的不是a的引用不能作为赋值运算符的左值,只能作为右值。

++a返回的是a的引用,由上知:
(++a) += (a++);这个是对的,它就像当于,++a;a=a+a;a++,最终的结果是11。

这种表达式给编译器的具体实现有关。

首先消灭0回复。
其次:
都可以吧。
只是运算方式是这样的,运算先括号等高优先级先运算低的后运算,其次从右向左运算,后运行覆盖先运行;
对于++,-- ,a的真正值再一条语句全部运行完毕才改变。

比如:(a++) += a; 中先得出 a++的值,但是a的值不变,再+a,得到最后的值。
第二个 (++a)+= (a++) 先得到a++的值,再得到a的值,因为是++a,运算完毕之后再+1,那么就是 a+(a++)。最后这个语句运行完毕之后,得到的a再+1,就这样。

不知道我有没理解正确,我当年是这么理解的。。。。

考试真变态,现实当中谁弄这样的语句。这样的题目我都直接pass
没有意义。 再说不同的编译器会有不同的理解。

三楼,你真牛逼

#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}

都可以,编译没错误