我感到困惑的直接分配和三元条件运算符的优先级:三元条件和赋值运算符优先级
#include<stdio.h>
int main(void)
{
int j, k;
j = k = 0;
(1 ? j : k) = 1; // first
printf("%d %d\n", j, k);
j = k = 0;
1 ? j : k = 1; // second
printf("%d %d\n", j, k);
return 0;
}
我希望可以将输出为:
1 0
1 0
但它正好是:
1 0
0 0
另外我得到这个警告:
的main.cpp:20:警告:语句没有影响
这是关于我的评论作为第二行。
由于直接赋值运算符的优先级低于三元条件运算符,因此我期望将第一行和第二行的行评论为等同。但可惜情况并非如此。
我试图与克++ --version(Ubuntu的4.4.3-4ubuntu5)4.4.3
C++是一种奇迹还是一种野兽?在花了我一生的编程时间之后,我仍然可能被捉住,不知道这样的简单表达的含义。我不得不在标准中看这个。 – Suma