いくつかのトピックを読んで、私はこのコードを見つけました、そしてそれがどのように機能するのか疑問に思っています。
5
2
コード:
static int a = 7;
int test()
{
return a--;
}
int main()
{
for(test();test();test())
{
cout << test() << "\n";
}
return 0;
}
提示された操作の順序:
a起動時にグローバルに初期化されます。〜7test()デクリメントaしてから、前の値(7)を返しますが、これは無視されます。test()デクリメントaしてから、ゼロ以外のテストに合格した前の値(6)を返し、forループを続行できるようにします。cout; test()4にデクリメントし、に送信される前の値(5)aを返します。couttest()3にデクリメントaし、前の値(4)を返します。これは無視されます。test()2にデクリメントaし、前の値(3)を返します。これは、ゼロ以外のテストに合格し、ループが続行されます。cout; test()1にデクリメントし、に送信される前の値(2)aを返します。couttest()0にデクリメントaし、前の値(1)を返しますが、これは無視されます。test()-1にデクリメントaし、前の値(0)を返します。これは、ゼロ以外のテストに失敗し、ループが終了します。今。そのループを6または8で開始し、何が起こるかを確認します。= P
次の形式のforループ:
for (a; b; c) {
// stuff
}
これと同等です:
{
a;
while (b) {
// stuff
c;
}
}