#include<stdio.h>
main()
{
(5%5)?1:0&puts("fizz");
}
上面的代码按预期打印fizz
。但我不明白按位&
操作数如何与0&puts("fizz")
一起使用。背后的工作是什么?表达的价值是什么?
有人请解释
答案 0 :(得分:4)
(5%5)
被评估为0
,这是错误的。 0&puts("fizz");
0
值与puts
的返回值进行按位AND运算,这只能通过执行打印fizz的函数找到。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()
。