私のコードは次のとおりです。
#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++ で完全に動作します。
私のコードは次のとおりです。
#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++ で完全に動作します。
その割り当てを書く慣用的な方法は次のとおりです。
b = (a >= 5) ? 100 : 200;
自分のやり方を維持したい場合は、括弧を追加してください。
(a >= 5) ? (b=100) : (b=200);
これが C++ では機能するが C では機能しない理由の詳細については、「C と C++ の条件演算子の違い」を参照してください(@Grijesh Chauhan に感謝!)
括弧はCで優先順位が高い..優先順位の問題により警告が表示される..これを試してください..
(a >= 5) ? (b = 100) : (b = 200);