我了解到if
条件可以接受0或1这2个值之一。
现在我偶然发现了以下代码:
#include <stdio.h>
int main(void)
{
if (printf("Hello World")) { }
}
在这种情况下,我们有一个函数不给出0或1,而是给出一组字符作为输出。
起初我希望看到一个错误,但是我没有得到一个,并且代码运行正常。
有人可以向我解释这种行为的原因
谢谢
答案 0 :(得分:5)
我了解到“ if”条件只能接受0或1作为输入。
绝对不正确。条件几乎可以接受所有内容,如果等于0,则解释为false;如果不等于0,则解释为true。
当我第一次看到它时,我期待一个错误,但是由于有printf,但它没有给出。
对。为什么会出现错误? printf
返回一个int
值,所以很好。 (在这种情况下,printf
返回零还是非零都没有关系,因为if
语句的主体中什么也没有发生。)