C按位运算符'&'使用

时间:2013-09-03 10:37:22

标签: c

#include<stdio.h>
main()
{
 (5%5)?1:0&puts("fizz");

}

上面的代码按预期打印fizz。但我不明白按位&操作数如何与0&puts("fizz")一起使用。背后的工作是什么?表达的价值是什么?

有人请解释

6 个答案:

答案 0 :(得分:4)

  1. (5%5)被评估为0,这是错误的。
  2. 整个陈述然后评估为0&puts("fizz");
  3. 为了评估这一点,0值与puts的返回值进行按位AND运算,这只能通过执行打印fizz的函数找到。
  4. 结果(始终为0)将被丢弃。

答案 1 :(得分:3)

表达式:

(5 % 5)?    1  : 0 & puts("fizz"); 
   ^              ^      
   0 == False     executes 

放置印刷品:"fizz"。 puts函数的返回值是按位&amp;使用0并且结果(应该是0)将被丢弃。

所以你的表达式相当于效果中的(5 % 5)? 1 : puts("fizz");

答案 2 :(得分:2)

嗯... 5 % 5为0(假),因此?:部分继续评估冒号右侧的表达式。

这意味着使用puts()的返回值评估0 bitwise-and:ed,所以显然必须调用该函数。

答案 3 :(得分:0)

如果成功完成,puts()函数将返回非负数。然后将该非负数与零进行“与”运算。

答案 4 :(得分:0)

成功时,puts()会返回非负数。 if (5%5)将返回false。因此,puts()的返回值是&的按位0

答案 5 :(得分:0)

&强制执行puts()