3

私は次のようないくつかのコードを持っています:

#include <stdio.h>
#include <stdlib.h>

static counter = 0;
static flag = 0;

int main()
{
    int number = 3;
    int i = 0;
    for(i; i< number; i++)
    {
        if(counter >= number)
        {
            counter = 0;
            flag = 1;
        }
        counter ++;

        printf("   counter = %u\n", counter);
        printf("   flag = %u\n", flag);

    }



    return 0;
}

カウンターが3に達するたびに、フラグは1になるはずですが、カウンターが3に達すると、フラグは0のままになるのはなぜですか。

4

5 に答える 5

3

ループ実行は 3 回だけです。最後の反復では、ifテスト中に、の値counterは 2 で、の値numberは 3 です。if テストは失敗します。ここで、カウンターが 3 にインクリメントされ、これが印刷されます。

于 2012-11-20T12:01:09.197 に答える
2

ifあなたは-sectionに達していません

i = 3 の場合、counter = 2 になり、サイクルから抜け出します。

于 2012-11-20T12:01:21.140 に答える
1

条件の後に増加するため、最大で2になるとcounter判断した場合。counter >= number

于 2012-11-20T12:02:15.293 に答える
1

for の条件が 3 になると失敗するため、内部のコードifは決して実行されないためですi

于 2012-11-20T12:00:28.830 に答える
0

以下のコードに到達することはなく、プログラムがループから外れたため

if(counter >= number)
        {
            counter = 0;
            flag = 1;
        }

そうcounter=3そしてflag残ります0

0ループから外れたときに設定したい場合は、

counter++ifステートメントの上にあり、もう一方を削除しcounter++ます(ifの下にあります)

于 2012-11-20T12:06:00.880 に答える