Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;增量运算符_C++_Increment - Fatal编程技术网

C++ c++;增量运算符

C++ c++;增量运算符,c++,increment,C++,Increment,可能重复: i++和++i之间有区别吗 i++是后增量,++i是预增量。前者允许在表达式中使用i的值,然后在最后增加i。后面的命令首先递增i,然后允许您使用它。例如: int value_of_i_before_increment=i++; 及 i++是后增量,++i是预增量。前者允许在表达式中使用i的值,然后在最后增加i。后面的命令首先递增i,然后允许您使用它。例如: int value_of_i_before_increment=i++; 及 i++在语句后递增i。 ++在对语句求值之

可能重复:


i++++i之间有区别吗

i++是后增量,++i是预增量。前者允许在表达式中使用i的值,然后在最后增加i。后面的命令首先递增i,然后允许您使用它。例如:

int value_of_i_before_increment=i++;


i++是后增量,++i是预增量。前者允许在表达式中使用i的值,然后在最后增加i。后面的命令首先递增i,然后允许您使用它。例如:

int value_of_i_before_increment=i++;


i++在语句后递增i。
++在对语句求值之前,i递增i

i++在语句后递增i。 ++在对语句求值之前,i递增i

是的

i++是后增量。它返回i的一个副本,然后增加i的值

++我是预增量。它递增i,然后返回i的值。

i++是后增量。它返回i的一个副本,然后增加i的值


++我是预增量。它递增i,然后返回i的值。

++c
是预递增的,因此在使用之前递增该值,
c++
是后递增的,因此使用该值然后递增它

int c;
c = 5;
cout << c++; // prints 5, then sets the value to 6
c = 5;
cout << ++c // sets the value to 6, then prints 6
intc;
c=5;

cout
++c
是预增量,因此在使用它之前增加值,
c++
是后增量,因此使用值然后增加值

int c;
c = 5;
cout << c++; // prints 5, then sets the value to 6
c = 5;
cout << ++c // sets the value to 6, then prints 6
intc;
c=5;

等不及了。没有指定的排序(这是许多新手出错的地方,并且开始相信某些C++表达式必须在实践中具有明确的效果)。i++是post增量,因为“++”在(post)“i”之后;它递增“i”的值,并返回“i”的原始值,无特定顺序。:-)我知道,当你把如何做作为一项任务来考虑时,这听起来可能很疯狂。你需要考虑的是编译器如何在寄存器中保留值并重用它们。@Alf P.Steinbach:我说的对吗,你的观点没有实际效果,除非你正在做一些已经不安全的事情?或者在一个单线程环境中会出现这种情况吗?@Scott:对第一,对第二。考虑<代码> +x=42 < /代码>。当把预增量看作是先递增,然后生成对x的引用时,除了x设置为42之外,怎么会生成其他任何东西呢?然而,在C++98中,它是正式的UB,因为它在序列点之间修改x两次。它必须允许编译器假设x最多只会有一次更改,并且x不会同时被修改和使用,因此它可以在寄存器中执行操作,而不必担心最终值(“对”或“错”),它只需在完整表达式的最后存储到mem。等等。没有指定的排序(这是许多新手出错的地方,并且开始相信某些C++表达式必须在实践中具有明确的效果)。i++是post增量,因为“++”在(post)“i”之后;它递增“i”的值,并返回“i”的原始值,无特定顺序。:-)我知道,当你把如何做作为一项任务来考虑时,这听起来可能很疯狂。你需要考虑的是编译器如何在寄存器中保留值并重用它们。@Alf P.Steinbach:我说的对吗,你的观点没有实际效果,除非你正在做一些已经不安全的事情?或者在一个单线程环境中会出现这种情况吗?@Scott:对第一,对第二。考虑<代码> +x=42 < /代码>。当把预增量看作是先递增,然后生成对x的引用时,除了x设置为42之外,怎么会生成其他任何东西呢?然而,在C++98中,它是正式的UB,因为它在序列点之间修改x两次。它必须允许编译器假设x最多有一次更改,并且x不会同时被修改和使用,因此它可以在寄存器中执行操作,而不必担心最终值(“对”或“错”)它可以在完整表达式的最后存储到mem中。+1:命名为当前\我会更好。@bjskishore123,更改为使其更明显…+1:命名为当前\我会更好。@bjskishore123,更改为使其更明显…不要忘记序列点!不要忘记序列点!