「ゆとり世代」がなじめない - わさっき にて,正答率の低い問題を二つ載せましたが,それぞれ,要補足の内容でした.
まず,
Xは,宣言文を実行するたびにオブジェクトが生成され,ブロックを終えると破棄される.Xに入るものは何か.
- static変数
- auto変数
- グローバル変数
- ローカル変数
については,static変数・auto変数・グローバル変数・ローカル変数のいずれも,Cの規格で書かれていない用語なのでした.自分の授業のみの俗語,あるいは,Cに限らずプログラミングをよりよく理解するための方便といったところです.
次に,
int型が32ビットならば,とり得る最大値はYである.Yに入るものは,以下のいずれか.
については,本文で示したとおり,整数値の内部表現は処理系で規定していないので,問題文中にそれを明記する必要があります.
JIS X 3010をWebで見直しましたが,内部表現についての規定は見当たりませんでした. (2008年3月1日追記: コメントいただいたとおり,6.2.6.2節で規定されています.)
5.2.4.2.1節に,整数型が表現できなければならない最大値や最小値などが規定されていますが,例えばsigned char型の最小値は-127,最大値は+127で,『C言語によるプログラミング―スーパーリファレンス編』p.65の図ではそれぞれ-128,127となっているのと対照的です.ついでに,p.64の「それぞれの型に対して,最低保障すべき値が決まっています」では,処理系が決めているのか,規格が決めているのかが読み取れません.
ともあれ,JIS X 3010によると,整数型の内部表現に,符号と絶対値を使ってもよいということですね*1.
*1:規格の同節に,intの最小値と最大値は-32767,+32767とありますが,上記の小テストでこれらを書くのは,題意を読んでいないということで×にして差し支えないでしょうね.