しかしこの話には後日談がある。菊やんさんが、面白い話題を振ってくれたのだ。 for (exp1;exp2;exp3) st と exp1; while (exp2) {st exp3;} が等価にならないのはcontinueがあるときとexp3で新しい名前が導入される場合かな exp3でAという名前が定義されると st の挙動が変わるからね。 他には exp3 にラベルをつけられるってのが利点? exp3で名前が導入できるというのは、驚くべきことに int A = 1; { for (;A--; exp3) { printf("%d\n", A); } } において、ループは一回しか実行されないのに、100とか出力できるような式exp3が書けるということです。 C89でも書けます。でも、えらい長いのでショートコードには使えません。 簡略化すると、菊やんさんが言っているのは次のことである。