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

jai*_*eep 2 c

我了解到该if条件可以接受2个值之一(0或1)作为输入。

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

#include <stdio.h> 
int main(void) 
{ 
    if (printf("Hello World")) { } 
} 
Run Code Online (Sandbox Code Playgroud)

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

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

有人可以解释一下这种现象的原因吗

谢谢

Ste*_*mit 5

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

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

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

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