相关疑难解决方法(0)

20
推荐指数
4
解决办法
3870
查看次数

意外结果,Gnu C中的三元运算符

所以三元运算符的运算符优先级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;
}
Run Code Online (Sandbox Code Playgroud)

这看起来类似于这里的问题:
C++三元条件和赋值运算符优先级
三元运算符求值顺序

作为澄清,我理解括号使其有效,正如我在原帖中的评论所表明的那样......

我只是想知道为什么语言作者会选择一种很有可能欺骗人们的评估方法,当第一个语句似乎可以在编译器方面被认为是有效的.

但是这些问题涉及左侧或类成员中的操作员,因为这种奇怪的行为发生在RHS上.

c conditional ternary-operator operator-precedence ternary

1
推荐指数
1
解决办法
694
查看次数