在不使用分号的情况下打印“ hello world”的概念帮助

时间:2019-09-12 15:13:07

标签: c

我了解到if条件可以接受0或1这2个值之一。

现在我偶然发现了以下代码:

#include <stdio.h> 
int main(void) 
{ 
    if (printf("Hello World")) { } 
} 

在这种情况下,我们有一个函数不给出0或1,而是给出一组字符作为输出。

起初我希望看到一个错误,但是我没有得到一个,并且代码运行正常。

有人可以向我解释这种行为的原因

谢谢

1 个答案:

答案 0 :(得分:5)

  

我了解到“ if”条件只能接受0或1作为输入。

绝对不正确。条件几乎可以接受所有内容,如果等于0,则解释为false;如果不等于0,则解释为true。

  

当我第一次看到它时,我期待一个错误,但是由于有printf,但它没有给出。

对。为什么会出现错误? printf返回一个int值,所以很好。 (在这种情况下,printf返回零还是非零都没有关系,因为if语句的主体中什么也没有发生。)