我执行了下面给出的代码
#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("") 时会发生什么>
我执行了下面给出的代码
#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("") 时会发生什么>
printf("")
返回成功打印的字符数。所以条件
if(ch = printf(""))
失败,因为ch
设置为 0。因此,else 子句正在执行。
来自printf手册页:
成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)。
您将 printf 的结果分配给 ch,它返回打印的字符数,当您不打印任何字符时,它返回 0,这被认为是 false,然后执行 else。
C 中的函数printf()
返回打印输出的长度。在您的示例中,printf("")
计算结果为0
. 该值被分配给ch
并且是条件的值。0
作为if
条件意味着“假”:采用 else 分支。
从printf
文档:
成功时,返回写入的字符总数。
当您编写一个空字符串时,printf
返回 0。然后您将该 0 分配给ch
变量,并在语句中使用分配的值(即 0)if
。当 0 计算为false
时,将打印第二条消息。