暇人向け
C99 で保証されているのはどれ。マルチスレッドとかは考えません。
- “char”を“signed char”に変えても、プログラムの挙動は変わらない
- “int”を“signed int”に変えても、プログラムの挙動は変わらない
- ~0 == -1
- sizeof(32768) == sizeof(0x8000)
- i、j、k が符号なし整数型の変数のとき、(i << j) << k と i << (j + k) は等価
- すべてのビットが 0 であるような int 型の値は、ゼロを表す
- すべてのビットが 0 であるような double 型の値は、ゼロを表す
- すべてのビットが 0 であるようなポインタ型の値は、ヌルポインタを表す
- 静的な変数を明示的に初期化しなかった場合は、すべてのビットが 0 に初期化される
- i が整数型の変数のとき、i == i
- d が実数型の変数のとき、d == d
- i や j が整数型の変数のとき、i == j ならば i と j は同一のビット表現を持つ
- d や e が実数型の変数のとき、d == e ならば d と e は同一のビット表現を持つ
- long で表現できて int では表現できないような整数値が存在する
- unsigned int で表現できて signed int では表現できないような整数値が存在する
- 1 ビットが 3 種類の値を保持できるようなアーキテクチャでは、unsigned char の最大値は 3CHAR_BIT - 1
- p が正しいポインタのとき、!(p < p)
- void *null = 0; と定義したとき、任意のポインタ p について、p != (void *)0 ならば p != null
- int *************p と宣言すると、p は int 型への 13 重のポインタになる
- FILE * 型の式 E について、getc(E) と (getc)(E) は等価
- 拡張子が“.cpp”のファイルを #include してもよい
- #if 'a' == 97 とそれに対応する #endif で囲まれた部分の中では、'a' == 97
答えはいつも規格書の中に。知らんけど。