2

私のコードは次のとおりです。

#include<stdio.h>
int main() {
   int a=10, b;
   a >= 5 ? b=100 : b=200;
   printf("%d %d", a, b);
   return 0;
}

条件演算子の行に「Lvalue Required」があります。

理由を説明していただけますか?

ちなみに、同じプログラムが C++ で完全に動作します。

4

2 に答える 2

7

その割り当てを書く慣用的な方法は次のとおりです。

b = (a >= 5) ? 100 : 200;

自分のやり方を維持したい場合は、括弧を追加してください。

(a >= 5) ? (b=100) : (b=200);

これが C++ では機能するが C では機能しない理由の詳細については、「C と C++ の条件演算子の違い」を参照してください(@Grijesh Chauhan に感謝!)

于 2013-03-03T19:54:44.977 に答える
1

括弧はCで優先順位が高い..優先順位の問題により警告が表示される..これを試してください..

(a >= 5) ? (b = 100) : (b = 200);
于 2013-03-03T21:54:56.647 に答える