C の条件式の型

C では、条件式は左辺値またはその結果ではありません。

一方のオペランドの型 もう一方のオペランドの型 結果の型
算術 算術 通常の算術変換後の算術型
構造体または共用体型 互換構造体または共用体型 両方のオペランドにすべての修飾子が付く構造体または共用体型
void void void
互換型を指すポインター 互換型を指すポインター 型に指定されたすべての修飾子が付く型を指すポインター
型を指すポインター NULL ポインター (定数 0) 型を指すポインター
オブジェクトまたは不完全型を指すポインター void を指すポインター 型に指定されたすべての修飾子が付く void を指すポインター

C GNU C の場合、条件式は、その型が void でなく、分岐がともに有効な左辺値であれば、有効な左辺値となります。次の条件式 (a ? b : c) は、GNU C では有効となります。

(a ? b : c) = 5
/*  Under GNU C, equivalent to (a ? b = 5 : (c = 5))  */

この式は、いずれかの拡張言語レベルにおけるコンパイルで使用可能です。

関連参照

IBM Copyright 2003