不定である

末永幸平(kohei@yl.is.s.u-tokyo.ac.jp)

ANSI-C仕様で"不定である"とか"処理系依存である"とか "定義されていない"とか書かれているものを集めたドキュメント


A2.5.2 - 文字定数


A2.6 - 文字列リテラル


A6.2 - 整数の変換


A6.3 - 整数と浮動小数点数


A6.4 - 浮動小数点型


A6.6 - ポインタと整数

(*1)ポインタを含む変換として, このsectionでは

があげられていて, その"他"ということである.

(*2) char型のオブジェクトでは, 厳密な整合の要求はもっとも少ない. ポインタをvoid*に変換して, そこから変更なしに戻すことも可能.


A7 - 式


A7.3.2 - 関数呼び出し

仮引数に型を明示しないスタイル. ちなみに, gcc-2.95.3では

/* Test of old style function declaration */
#include 

/* Old style declaration */
int f(x, y);

int main(int argc, char** argv)
{
  printf("Calling f\n");
  f("Hello", 4, 5);
  return 0;
}

int f(int x, int y)
{
  printf("f was called\n");
  printf("%d\n", x + 3);
  return 0;
}
は通ります.


A7.4.8 - sizeof演算子


A7.6 - 乗法演算子


A7.7 - 加法演算子

じゃあ, Pが配列の最後から一つ前の要素を指すときの(P + 2) - Pは?


A7.8 - シフト演算子


A7.9 - 関係演算子


A8.2 - 型指定子


A8.3 - 構造体と共用体の宣言

K&Rには, 注として「ビットフィールドを格納するためのこの言語規則は 無条件に"処理系依存"と読むことをおすすめする」とか「この方法は, メモリのレイアウトをビットレベルで記述する移植不可能な方法として 使うことができる」とか書かれている.


A8.7 - 初期化


A10.2 - 外部宣言


A12 - 前処理(プリプロセッサ)


A12.3 - マクロの定義と展開

たとえば

#define cat(x, y) x ## y
とかしたとき
cat(cat(1, 2), 3)
は不定.


A12.4 - ファイルの包含


A12.8 - プラグマ


Copyright(写せ右) (C) 2002 SUENAGA Kohei. All Rights Reserved.(すべての右は予約されました)
$Log: futei.html,v $ Revision 1.1.1.1 2002/12/24 05:08:50 kohei Fail-Safe C IDL Revision 1.1.1.1 2002/12/21 12:54:50 Administrator Revision 1.1.1.1 2002/11/07 02:41:05 kohei Fail-safe C IDL Revision 1.1.1.1 2002/11/06 08:47:51 kohei Fail-safe C IDL.