いくつかのトピックを読んで、私はこのコードを見つけました、そしてそれがどのように機能するのか疑問に思っています。
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
を返します。cout
test()
3にデクリメントa
し、前の値(4)を返します。これは無視されます。test()
2にデクリメントa
し、前の値(3)を返します。これは、ゼロ以外のテストに合格し、ループが続行されます。cout
; test()
1にデクリメントし、に送信される前の値(2)a
を返します。cout
test()
0にデクリメントa
し、前の値(1)を返しますが、これは無視されます。test()
-1にデクリメントa
し、前の値(0)を返します。これは、ゼロ以外のテストに失敗し、ループが終了します。今。そのループを6または8で開始し、何が起こるかを確認します。= P
次の形式のfor
ループ:
for (a; b; c) {
// stuff
}
これと同等です:
{
a;
while (b) {
// stuff
c;
}
}