-1

C++ での ++i および i++ のマイクロ最適化に関するかなりの数の投稿/質問を読んでいます。そして、私が学んだことから、++i は「できる」とは限りませんが、i++ よりも高速になる可能性があります。

それで、これは私にこの質問をさせます.i ++のポイントは何ですか? ++iは、最初に値をインクリメントしてから返すことだと思いました。i++ として値を返し、それをインクリメントします。しかし、私はこれについて非常に簡単なテストを行いました:

for(int i = 0; i < 10; ++i)
{
    std::cout << i << std::endl;
}

以下と同じです:

for(int i = 0; i < 10; i++)
{
    std::cout << i << std::endl;
}

どちらも同じ結果を出力します。だから私の本当の質問は、++i ではなく i++ を使用しなければならない状況があるということですか? ある場合は、説明してください。ありがとう

4

4 に答える 4

1

次に例を示します。

int i = 0;
while (i++ < 10) {
    std::cout << i << std::endl;
}

これにより、数値1が に出力され10ます。を使用++iすると、 に出力1され9ます。

もちろん、これは簡単な例です。これを行う方法は他にもありますが、ポイントは古いi++を返すことです。さらに明確にするために:

int i = 5;
std::cout << i++ << std::endl; // 5
std::cout << i << std::endl;   // 6

std::cout << ++i << std::endl; // 7
std::cout << i << std::endl;   // 7

ループでは、インクリメントが実行されから条件がチェックforされるため、違いはありません。2 つの唯一の違いは、実際の式の値です。

于 2013-08-31T14:08:34.033 に答える
0

場合によっては、最初に値を使用してからインクリメントしたい場合があります。

while (array[i++] != sentinel)
于 2013-08-31T14:08:06.643 に答える