2016-11-09 7 views
-1
#include <stdio.h> 

/* function declaration */ 
void func(void); 

static int count = 5; /* global variable */ 

main() { 

    while(count--) { 
    func(); 
} 

return 0; 
} 

/* function definition */ 
void func(void) { 

static int i = 5; /* local static variable */ 
i++; 

printf("i is %d and count is %d\n", i, count); 
} 

私はwhileループで探していますし、カウントが0に達したとき、それはしかし、0で停止しなければならない理由として理由がない、それが停止します。私は0としてカウントを設定しようとし、使用する - と-1になったので、これは私が見ることができるから0に停止する必要はありません理由はありません。whileループがこのコードで0で停止するのはなぜですか?

+3

count'がゼロである場合には ''(カウント - )ながら 'ゼロ、またはfalseに評価し、その条件がもはや真ではありませんので、ループが停止した(非ゼロ)。これは 'while(count_!= 0)'としてより冗長に書くことができます。 'count - 'は減算の前に 'count'の値に評価されます。最初に減分したい場合は、 '--count'(減分された値を返します)を書きます。 –

+2

「理由なし」とはどういう意味ですか? '0'のループ条件は十分な理由ではありませんか? –

+0

カウント数を考えているうちに考えていませんでした。 – user1256053

答えて

1

カウントが0に達した場合ただし、これは間違った結論である

を停止し、countが到達したとき、それは停止-1、あなたは右のループ後にprint文を入れた場合、あなたはそれを確認することができます。この場合、ループ本体は実行されませんが、ループがどのように動作します。変数の後に使用

0

--オペレータは最後に適用されます。 countが0(偽と評価)の場合、条件はfalseであり、count--(したがってcountは-1)を適用してループを終了します。

あなたの文化については、--countを行うことができます。条件を確認する前にcountを減らします。

関連する問題