这个给定的C程序的输出

时间:2014-10-30 11:57:35

标签: c

以下程序片段

int k=-7;

printf("%d",0<!k);

将根据答案打印0。

任何人都可以解释我为什么吗?

3 个答案:

答案 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