增量++ i,i ++和i + = 1

use*_*858 2 c++ for-loop increment

我是C++的初学者.我的理解是: -

i ++首先执行,然后递增,++ i先递增,然后执行,i + = 1递增1,然后执行.但是在FOR循环中:

for (i=0;i<10;i++)
for (i=0;i<10;++i)
Run Code Online (Sandbox Code Playgroud)

上面这两个循环确实没有区别.

这是另一个计算从1到100的所有整数的总和:

int i=1, sum=0;
while (i<=100)
{
    sum+=i;
    i++;         //i+=1;    ++i;
}
cout<<sum<<" "<<i<<endl;
return 0;
Run Code Online (Sandbox Code Playgroud)

但是如果我用i + = 1或++ i替换i ++,它们都会返回5050和101的总和.所以我真的看不出它们有什么不同.

所以有人可以向我解释这个吗?编程中哪一个最常用?谢谢!!

Pau*_*per 6

你是对的.在您的示例中没有区别.

但这里有:

int i = 0;
cout << i++ << endl;  //prints 0
cout << i   << endl;  //prints 1
Run Code Online (Sandbox Code Playgroud)

VS

int i = 0;
cout << ++i << endl;  //prints 1
cout <<   i << endl;  //prints 1
Run Code Online (Sandbox Code Playgroud)

编程中哪一个最常用?

大多数情况下,++是语句中唯一的操作(FYI,for循环有三个语句).

如果不是,那么它可能很重要,你将使用任何一个给你正确的行为.

FYI

一些开发人员认为,如果pre和postfix运算符应该总是单独使用(不是大语句的一部分).它们可能导致令人困惑的代码,甚至是未定义的行为.

例如,

int i = 0;
cout << i++ + i++ << endl;
Run Code Online (Sandbox Code Playgroud)

有未定义的行为.