【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131

このエントリーをはてなブックマークに追加
747デフォルトの名無しさん
C++でできるんだから、C99でできるようにすることも可能だったとは思う。
どういう経緯があったかは知らないが、結果として制定されたC99では、
できるようになっていないけど。

以下チラシの裏
これは、こういうコード
Tok* ct;
if (ct = gettok()) { /* ... */ }
に対して、条件式のところで変数を宣言できれば、未初期化の変数を減らせ、
ついでに条件文内に変数の有効範囲を閉じ込められるというアイデアだった。
if (Tok* ct = gettok())
{
  // ctはスコープ内
}
// ctはスコープ外
参考『C++の設計と進化』 3.11.5.2 条件文の中の宣言

C++では、C以上に初期化と代入が区別されるので、
>>737-738のような書き換えができないこともある。
それもあって、俺はたまに使うし、C++からは無くなれと思わない。