And*_*res 3 c operators conditional-operator operator-precedence
我正在关注一本关于 c 编程的书并遇到了这个例子:
a<=20?b=30:c=30;
Run Code Online (Sandbox Code Playgroud)
我只需要一次使用数字 30。书中的解决方法是
((a<=20)?&b:&c)=30);
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,出现以下错误:
左值需要作为赋值的左操作数。
那里似乎缺少一个括号,但我不知道在哪里。
你能告诉我如何解决这个问题吗?
假设a和b是相同类型的数字,就这样做
*((a <= 20) ? &b : &c) = 30;
Run Code Online (Sandbox Code Playgroud)
获取a和b地址需要取消引用('*')以获得左值
来自@Vrintle 备注,您也可以在 C++ 中进行
((a<=20)?b:c)=30;
Run Code Online (Sandbox Code Playgroud)
编译器知道表单是左值,所以不使用b和c的值,而是使用它们的引用
那里似乎缺少一个括号,但我不知道在哪里。
在((a<=20)?&b:&c)=30);最后一个 ')' 中没有对应的 '('