0

誰も私の疑問を解消できますか..なぜこのプログラムは出力として10を与えているのですか? メカニズムを説明していただけますか.. for ループもあります。ステートメントの前にも

#include <iostream>
using namespace std;

int main() {
    int i ;
    for ( i =0 ; i<10 ; i++);
    {
      cout<<i ;
    }

    return 0;
}
4

2 に答える 2

6
for ( i =0 ; i<10 ; i++);

これは完全なループです。最後のセミコロンは空の本体を示します。したがって、i最終的には単純に増加し10ます。それが10(ではなく9)理由は、継続条件i < 10が偽になるときだからです。

つまり、この小さなスニペットは次のことを意味します。

{
    cout<<i ;
}

(ループによって残された) の内容を出力する、一度実行されたステートメントです。i10

この場合の中かっこは、ステートメントを囲まれたスコープに入れるだけで、ループとはまったく関係ありません。

iしたがって、ループを介して毎回出力したい場合は、セミコロンを削除して、中括弧とその内容がそのループの本体になるようにします。

于 2016-05-30T13:50:36.003 に答える
3
for ( i =0 ; i<10 ; i++); // This means loop till i = 10 at which point loop breaks. This is because of ending the for loop with ';'
{ // start of scope
    cout<<i ; // Print the value of i which is 10 now
} // end of scope

ループが i = 9 のポイントに達したと考えてください。したがって、'i < 10' 条件は真です。
したがって、次の反復では 'i++' によって 10 にインクリメントされます。
ここで再びテスト 'i < 10' がチェックされます。この時点で、'10 < 10' テストは false を返し、for ループが中断され、i の値は 10 になります。

于 2016-05-30T13:51:35.793 に答える