我执行了下面给出的代码
#include<stdio.h>
int main()
{
char ch;
if(ch = printf(""))
printf("It matters\n");
else
printf("It doesn't matters\n");
return 0;
}
它给出输出“这没关系” 有人可以解释一下这段代码是如何工作的。执行ch = printf(“”)&gt;
时发生的事情答案 0 :(得分:9)
printf("")
返回成功打印的字符数。条件
if(ch = printf(""))
失败,因为ch
设置为0.因此,else子句正在执行。
答案 1 :(得分:1)
来自printf联系人页面:
成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)。
你将printf的结果分配给ch,它返回打印的字符数,因为你没有打印任何字符,它返回0,这被认为是假,然后执行else。
答案 2 :(得分:1)
C中的函数printf()
返回打印输出的长度。在您的示例中,printf("")
评估为0
。此值分配给ch
,并且是条件的值。 0
作为if
条件表示“false”:采取else分支。
答案 3 :(得分:0)
来自printf
文档:
成功时,将返回写入的字符总数。
当你写一个空字符串时,printf
返回0.然后你将该0赋值给ch
变量,并使用{{0}}中赋值的值(即0) {1}}陈述。当0评估为if
时,将打印第二条消息。