(2)記憶クラスと型
記憶クラスとしては、次のものが使用できます. auto, static, extern, register register記憶については、autoとまったく同じに扱われます.記述してもエラーとはならない程度にしか扱われていません. A 型 使える型は、次のとおりです. char, int, unsigned, long, short, typedef名 ここで、typedef 名は、typedef により予め型宣言された識別子をいいます.long,short については、常に 16 ビットで扱いますので、記述してもしなくても同じ結果となります.unsigned,long,short は形容詞的に unsigned int などと宣言することもできます. char については、常に 8 ビット正整数であり、式の中で int に変換されたときも正整数となります.(上位パイトに 00 を付けるだけ) B 型宣言 上記型を基本として、それから派生するものとして ポインタ、配列(多次元可能)、関数ポインタ、配列ポインタ 構造体、共用体、等 の型宣言を行うことができます.さらに、これらの型宣言は、宣言の許される所ではどこでも宣言できます.関数内のブロックの先頭での変数宣言ももちろん可能です.宣言の適用範囲は、一般的な規則に従います. 構造体、共用体の宣言で、タグ名やメンバ名は、通常の変数名と重複しても構いませんが、異なる構造体、共用体において同一メンバを使用しても区別されず、アドレスオフセッットは、先に宣言されたものが使用されます.構造体、共用体の入れ子宣言についても特に制限はありません.なお、ビットフィールドの宣言はできません. C 初期化 変数宣言における初期化については、今回サポートされていません. この機能は、ぜひとも設けたいとおもったのですが、コンパイラの宣言処理の設計で初期化について当初考慮していなかったため、現パージョンでの変更が簡単にできず諦めたためです. |