以下程序片段
int k=-7;
printf("%d",0<!k);
将根据答案打印0。
任何人都可以解释我为什么吗?
答案 0 :(得分:6)
所以,这就是你要打印的内容:
0 < !(-7)
首先,!( - 7)将给出0,因为-7是&#34; truthy&#34;整数,即它不为零,!
否定它,所以整个事情是&#34; false&#34;即0。
然后你有:
0 < 0
这当然是假的,即在C中为0。您将其打印为整数,所以当然您会看到0
。
答案 1 :(得分:0)
除0以外的任何值都为真。所以-7或-8或 n 或 -k 都是真的。
在您的代码中..
int k=-7; // ok
在第二行
0<!k
!(任何整数)总是给零。所以,!(k)= 0。
现在表达式将成为0 < 0
0&gt; 0或0 < 0总是假的。
并且在printf
语句"%d"
中使用的是Integer Specifier,输出为false,因此您将看到输出0.
希望它有所帮助!
答案 2 :(得分:-2)
(-7) != 0
So !-7 = false = 0
So 0 < !k => 0 < 0 => false = 0