这个C程序是如何执行的

时间:2013-06-20 17:44:57

标签: c

我执行了下面给出的代码

#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;

时发生的事情

4 个答案:

答案 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时,将打印第二条消息。