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++标准中的序列点和未定义行为.
有很多相关的问题.仔细研究它们!