C言語なら俺に聞け(入門編)Part 87
■ このスレッドは過去ログ倉庫に格納されています
0808デフォルトの名無しさん
2011/08/07(日) 10:35:13.48>これは_obstack_newchunkが値を返さないから0を置いてるって事なのかな?
他にどう解釈しろと?
試しに以下のコードをコンパイルしてみたら、
やっぱり通らなかった(Visual C++ 2008上で C2120 エラーが出る)。
void f(void) {}
int main(void) {int a = 1 ? f() : 2; return a;}
・・・でも、上のコードを
void f(void) {}
int main(void) {return 1 ? f() : 2;}
とすると、すんなり通ってしまったようだ。(警告レベル /W3)
警告レベルを /W4 にすると以下のような警告は出るけど、エラー扱いではないらしい。
warning C4053: '?:' 演算に void 型の式がオペランドとして使われています。
で、調べてみたら、http://msdn.microsoft.com/ja-jp/library/1e8z2ake(v=vs.90).aspx に、
?: 演算子には void 型の式が指定されています。void 型のオペランドの値は未定義です。
と書いてある。
つまり、"1 ? f() : 2" は未定義だが、エラーではないって事? 本当? 何故?
誰か偉い人、理由を教えてください。
■ このスレッドは過去ログ倉庫に格納されています