Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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 - Fatal编程技术网

C++ 前缀/后缀增量

C++ 前缀/后缀增量,c++,c,C++,C,可能重复: 有人能明确解释前缀增量和后缀增量的区别吗 还有人能解释为什么输出6吗 i=1; cout << ++i + ++i; i=1; cout前缀++i和后缀i++运算符影响语句的求值顺序。使用前缀++i,i的值递增,这就是所使用的值。但是对于后缀i++,使用i的原始值,然后对该行后面的任何内容递增。前缀++i和后缀i++运算符影响语句的求值顺序。使用前缀++i,i的值递增,这就是所使用的值。但是在后缀i++中,使用了i的原始值,然后该行后面的任何值都会递增。1)非常明显,

可能重复:

有人能明确解释前缀增量和后缀增量的区别吗

还有人能解释为什么输出6吗

i=1;
cout << ++i + ++i;
i=1;

cout前缀
++i
和后缀
i++
运算符影响语句的求值顺序。使用前缀
++i
i
的值递增,这就是所使用的值。但是对于后缀
i++
,使用
i
的原始值,然后对该行后面的任何内容递增。

前缀
++i
和后缀
i++
运算符影响语句的求值顺序。使用前缀
++i
i
的值递增,这就是所使用的值。但是在后缀
i++
中,使用了
i
的原始值,然后该行后面的任何值都会递增。

1)非常明显,“++i”首先递增变量,然后“i++”递增

2) 不太明显的是,将中缀增量/减量与同一变量上的其他操作混合在一起的复杂表达式可能会引入未定义的行为:

我同意:线程解决了这个问题。

1)很明显,“++I”首先递增变量,然后“I++”递增

2) 不太明显的是,将中缀增量/减量与同一变量上的其他操作混合在一起的复杂表达式可能会引入未定义的行为:


我同意:该线程解决了这个问题。

案例1我认为应该是5而不是6。此外,我认为您可能会受益于对c/c++进行更多的背景阅读。在同一变量上应用多个增量的情况下,您指定的代码是未指定的行为。这意味着编译器可以做它想做的事情。这并不总是您所期望的。为什么要编写需要从头开始才能弄清楚发生了什么的代码?只会给你自己或其他程序员带来未来的问题。代码应该是可读的。由于这个问题涉及序列点和未定义的行为,我认为这是一个更好的重复:案例1我认为应该是5而不是6。另外,我认为您可能会受益于对c/c++进行更多的背景阅读。在同一变量上应用多个增量的情况下,您指定的代码是未指定的行为。这意味着编译器可以做它想做的事情。这并不总是您所期望的。为什么要编写需要从头开始才能弄清楚发生了什么的代码?只会给你自己或其他程序员带来未来的问题。代码应该是可读的。因为这个问题涉及序列点和未定义的行为,我认为这是一个更好的重复:你所说的“比较”是什么意思?他的意思是,对于I++编译器在递增之前添加,对于++I编译器先递增,然后再写入,更清楚(希望如此)。你说的是什么“比较”?他的意思是,在i++中,编译器在递增之前添加,而在i++中,编译器先递增,然后再写入,这样(希望)更清楚。
i = 1;
cout << ++i + i++;
i = 0;
cout << (i++ || i++)