2013-06-20 23 views
-4

我执行下面怎么会这样的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(“”)执行时会发生什么情况>

+5

谷歌“man printf”来了解printf的返回值是什么。 –

+1

仅供参考,如果您正在使用* nix机器,则只需在终端输入“man printf”以获取有关该功能的信息。你可以用大多数标准函数替换'printf'。如果你在Windoze上工作,谷歌可以给你相同的结果。总是很好的做一些功课进入前/后的条件和I/O的功能 – Mike

回答

9
printf("") 

返回已成功打印的字符数。所以conidtion

if(ch = printf("")) 

未按ch设置为0。因此,结果收到了执行else子句。

1

printf手册页:

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

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

+0

谢谢...我得到了我的回答 – user2504985

+2

请[接受它](http://meta.stackexchange.com/a/5235)然后 – anatolyg

1

函数printf()在C中返回打印输出的长度。在你的例子中,printf("")的计算结果为0。该值被分配到ch并且是条件的值。 0作为if条件表示“false”:取其他分支。

0

printf文档:

如果成功,则返回写入的字符总数。

当你正在写一个空字符串,printf返回0。然后,指定是0到ch变量,使用分配的值(0)在if声明。当0评估为false时,将打印第二条消息。

相关问题