-4

我执行了下面给出的代码

#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("") 时会发生什么>

4

4 回答 4

9
printf("")

返回成功打印的字符数。所以条件

if(ch = printf(""))

失败,因为ch设置为 0。因此,else 子句正在执行。

于 2013-06-20T17:49:15.383 回答
1

来自printf手册页:

成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)。

您将 printf 的结果分配给 ch,它返回打印的字符数,当您不打印任何字符时,它返回 0,这被认为是 false,然后执行 else。

于 2013-06-20T17:50:07.353 回答
1

C 中的函数printf()返回打印输出的长度。在您的示例中,printf("")计算结果为0. 该值被分配给ch并且是条件的值。0作为if条件意味着“假”:采用 else 分支。

于 2013-06-20T17:50:14.200 回答
0

printf文档:

成功时,返回写入的字符总数。

当您编写一个空字符串时,printf返回 0。然后您将该 0 分配给ch变量,并在语句中使用分配的值(即 0)if。当 0 计算为false时,将打印第二条消息。

于 2013-06-20T17:53:09.957 回答