如何编写表达式a<=20?b=30:c=30;30只使用一次?

如何编写表达式a<=20?b=30:c=30;30只使用一次?,c,operators,operator-precedence,conditional-operator,C,Operators,Operator Precedence,Conditional Operator,我正在阅读一本关于c编程的书,遇到了以下示例: a<=20?b=30:c=30; a假设a和b是同一类型的数字,就这样做吧 *((a <= 20) ? &b : &c) = 30; *((a对于C中的初学者,此表达式 a<=20?b=30:c=30 > C++(C++ 14,5.16条件运算符) 在C++中,未被C编译器编译的原始表达式是有效的< /P> a <= 20 ? b = 30 : c = 30 这看起来像是毫无意义的练习 *((AYU

我正在阅读一本关于c编程的书,遇到了以下示例:

a<=20?b=30:c=30;
a假设a和b是同一类型的数字,就这样做吧

*((a <= 20) ? &b : &c) = 30;

*((a对于C中的初学者,此表达式

a<=20?b=30:c=30
<> > C++(C++ 14,5.16条件运算符)

在C++中,未被C编译器编译的原始表达式是有效的< /P>
a <= 20 ? b = 30 : c = 30

<代码>这看起来像是毫无意义的练习<代码> *((AYU可以考虑不只是代码>)a@Vrintle不,因为你得到了b或c的值,所以就像写
10=20
,需要左值似乎没问题。但是,我运行了它,它没有给出错误。为什么呢?@Vrintle我编辑了我的答案,谢谢你的评论,我刚刚醒来;-)@ Vunurt:它没有给TiO或cpp.sh造成错误,因为你把它编译成C++,C++中的规则是不同的。在C,<代码>(A你确定优先级吗?)BrOVO是的,我是肯定的。你是对的,我在C++模式下思考。我不知道这里C的区别。
a<=20?b=30:c=30
( a<=20?b=30:c ) = 30
a <= 20 ? b = 30 : ( c = 30 )
a <= 20 ? ( b = 30 ) : ( c = 30 )
( a <= 20 ? b : c ) = 30;
conditional-expression:
    logical-OR-expression
    logical-OR-expression ? expression : conditional-expression
conditional-expression:
    logical-or-expression
    logical-or-expression ? expression : assignment-expression
a <= 20 ? b = 30 : c = 30