printf("%i\n",2&2==2);
这应该打印出1,但我得到0,这为什么呢?
int ans=2&2; printf("%i\n",ans==2);
此打印1,为什么第一种方式不起作用?if语句也是如此
操作顺序与你认为的不同。在一行中编写它的正确方法是:
printf("%i\n", (2 & 2) == 2); // Prints 1
@ BackSpace7777777:如果您不熟悉“运算符优先级”,请参见此处:tutorialspoint.com/cprogramming/c_operators_precedence.htm
@ BackSpace7777777:
&
和&&
曾经是一个上下文相关的操作者。奇怪的优先次序&
是那个历史的产物。