- 締切済み
CとC++の変数宣言について
なぜC言語では変数の宣言をブロックの先頭でする必要があるのかがわかりません。 またC++がどこででも宣言できるのもなぜか教えてください
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
「ブロックの先頭で全部宣言できるとコンパイラが楽」というのはあるんじゃないかな. でも, 「あたりまえ」といえば「あたりまえ」だけど, 必ずしも「あたりまえ」ではない気がする>#2. Algol では途中で変数を定義できるはずだし.
- eroermine
- ベストアンサー率18% (83/444)
回答No.2
当時の常識であたりまえでした。 Cコンパイラが出したアセンブラコードとの対応も取り易いわけで。 コンパイラ側から見ても先に宣言がまとまってたほうがコードを出し易いでしょ。 C++はCが出て20年ほど経ってからなので流行も代わってるでしょう。 C やってて一番面白くないのは for (int i=0;;) 等できなかったことで、これは for ( の左カッコからブロックにするか特例にするかすれば解決できたのですが、より一般的な方法を選んだと。 まあ当事者じゃないのですべて想像ですが。
- Werner
- ベストアンサー率53% (395/735)
回答No.1
> なぜC言語では変数の宣言をブロックの先頭でする必要があるのかがわかりません。 規格でそう決まっているから。 なお、C言語でもC99ならブロックの途中で宣言できます。 > またC++がどこででも宣言できるのもなぜか教えてください 規格でそう決まっているから。