プロが教えるわが家の防犯対策術!

なぜC言語では変数の宣言をブロックの先頭でする必要があるのかがわかりません。

またC++がどこででも宣言できるのもなぜか教えてください

A 回答 (3件)

「ブロックの先頭で全部宣言できるとコンパイラが楽」というのはあるんじゃないかな.


でも, 「あたりまえ」といえば「あたりまえ」だけど, 必ずしも「あたりまえ」ではない気がする>#2.
Algol では途中で変数を定義できるはずだし.
    • good
    • 0

当時の常識であたりまえでした。


Cコンパイラが出したアセンブラコードとの対応も取り易いわけで。
コンパイラ側から見ても先に宣言がまとまってたほうがコードを出し易いでしょ。
C++はCが出て20年ほど経ってからなので流行も代わってるでしょう。
C やってて一番面白くないのは
for (int i=0;;) 等できなかったことで、これは
for ( の左カッコからブロックにするか特例にするかすれば解決できたのですが、より一般的な方法を選んだと。

まあ当事者じゃないのですべて想像ですが。
    • good
    • 0

> なぜC言語では変数の宣言をブロックの先頭でする必要があるのかがわかりません。


規格でそう決まっているから。
なお、C言語でもC99ならブロックの途中で宣言できます。

> またC++がどこででも宣言できるのもなぜか教えてください
規格でそう決まっているから。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!