所以三元运算符 in 的运算符优先级对C
我来说真的很奇怪。一个例子:
#include <stdio.h>
int main ()
{
int i=5;
int j=6;
int k=7;
printf("A: %d\n", i+j+(k!=7)?1:11); //prints 1
printf("B: %d\n", i+j+((k!=7)?1:11)); //prints 22
return 0;
}
这似乎类似于这里的问题:
C++ 三元条件和赋值运算符优先级
三元运算符评估顺序
作为澄清,我知道括号使它起作用,正如我在原始帖子中的评论所表明的那样......
我只是想知道为什么语言作者会选择一种可能会欺骗人们的评估方法,而第一个语句似乎可以在编译器方面进行格式化以使其有效。
但是这些问题涉及左侧或类成员内的运算符,因为这种奇怪的行为发生在 RHS 上。