有些C++的书上说,++x是「先加后用」,x++ 是「先用后加」。这是错误的。
++x 与 x++ 都是先加后用。区别是 ++x 是先加后用新数据,x++ 是先加后用旧数据。
比如说 y = ++x;
等同于
x = x + 1; // 先加
y = x; // 后用新数据
而 y = x++;
等同于
temp = x; // 保存一个副本
x = x + 1; // 先加
y = temp; // 后用旧数据
出处:
C++之父 Bjarne Stroustrup 的名著《The C++ Programming Language》第4版第276页。
明确指出 y=x++
等同于 y = (t=x, x = x + 1, t)
。
C++98标准(最早的C++标准)第5.2.6条,明确指出:后置的 ++ 运算符,是取得「原始数据的副本」(a copy of the original value)。
C++20标准(最新的C++标准)第7.6.1.6条,明确指出:后置的 ++ 运算符,是取得「原始数据的副本」(a copy of the original value)。