c++ 为什么表达式b = a++和a = a++中应用于变量'a'的后置增量运算符表现得很明显?[duplicate]

hjzp0vay  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(93)

此问题在此处已有答案

Why are these constructs using pre and post-increment undefined behavior?(14个答案)
Undefined behavior and sequence points(5个答案)
2天前关闭。
谁能解释一下下面的话。

a = 1;
b = 1;
b = a++;
cout << "a = " << a << " & b = " << b;

output: 
a = 2 & b = 1

在上面的代码中,'a'的输出值为2,'b'的值为1。因为b = a++意味着,首先将'a'的值赋给'b',然后'a'递增。现在考虑下面提到的另一个场景。

a = 1;
a = a++; 
cout << "a = " << a;

output: 
a = 1

这里,逻辑上'a'的值必须是2。因为'a'被赋值给'a',所以'a'也被递增。类似于前面提到的b = a++。但是,a的值仍然是1。

zwghvu4y

zwghvu4y1#

增量运算符既可以在赋值前将变量的值加1,也可以在赋值后将变量的值加1,因此可以分为两种类型:预递增运算符;后置增量运算符; 1)预递增运算符:预递增运算符用于在表达式中使用变量值之前递增该值。在预递增运算符中,值首先递增,然后在表达式中使用。

相关问题