前/后增量说明

XO3*_*O39 2 c++ pre-increment post-increment

请对我很轻松,不要拍我,因为我还是新手.

当我运行这段代码时,我完全感到困惑,无法终身解决原因:

int y = 9;
cout << "++y = " << ++y << "\n--y = " << --y << "\ny++ = " << y++ << "\ny-- = " << y-- << "\n";
cout << "y = " << y << "\n";
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

y = 9
++y = 9
--y = 9
y++ = 8
y-- = 9
y = 9
Run Code Online (Sandbox Code Playgroud)

而不是这些结果:

y = 9
++y = 10
--y = 9
y++ = 9
y-- = 10
y = 9
Run Code Online (Sandbox Code Playgroud)

我从这段代码得到的:

int y = 9;
cout << "y = " << y << "\n";
cout << "++y = " << ++y << "\n";
cout << "--y = " << --y << "\n";
cout << "y++ = " << y++ << "\n";
cout << "y-- = " << y-- << "\n";
cout << "y = " << y << "\n";
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释 - 尽可能简单的单词 - 在第一个代码中会发生什么,以便以这种方式打印结果?

Bas*_*tch 11

一个简单的规则是,您不应该在任何给定语句中多次增加相同位置.所以你不应该编码cout << y++ << ++y << endl;包含两个增量的代码y(假设一个int y;声明).

有关详细信息,请阅读C++标准中的序列点未定义行为.

有很多相关的问题.仔细研究它们!