資格暗記無料で始める

未定義動作とは?

未定義動作とは、C言語規格が結果を一切規定していない操作。符号付き整数のオーバフロー、配列外アクセス、初期化前の変数参照などが該当し、コンパイラは何をしてもよい。試験では最適化によって挙動が変わる原因として問われる。

エンベデッドシステムスペシャリスト試験の過去問では1回出題されています。

みていぎどうさ

エンベデッドシステムスペシャリスト試験の頻出用語/午前II


未定義動作の意味

C言語規格が結果を一切規定していない操作。符号付き整数のオーバフロー、配列外アクセス、初期化前の変数参照などが該当し、コンパイラは何をしてもよい。試験では最適化によって挙動が変わる原因として問われる。

未定義動作の具体例

符号付きintのオーバフローを前提にした範囲チェックは、コンパイラが「オーバフローは起きない」と仮定して条件式ごと削除することがある。最適化を-O0から-O2へ上げた途端に動かなくなる典型例で、規約で禁止される。

未定義動作は試験でどう引っ掛けられる?

処理系定義動作(右シフトの符号拡張など、処理系が決めて文書化する)や未規定動作(評価順序など、選択肢の中から決まる)とは別物。デバッグ版で動いたからといって、定義された動作になったわけではない。

未定義動作と関連する用語

未定義動作が出た過去問

最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。