把vs printf放在下面的代码中?

时间:2010-12-24 10:06:58

标签: c++ c

#include "stdio.h"
#include "conio.h"

int main(void)
{

        if(printf("ABC"))
        {

        }
        else
        {
            printf("XYZ");
        }
        _getch();
        return 0;
}

output : ABC

----------------------------------------------------------------------------------------

#include "stdio.h"
#include "conio.h"

int main(void)
{

        if(puts("ABC"))
        {

        }
        else
        {
            printf("XYZ");
        }
        _getch();
        return 0;
}

output : ABC XYZ 

(IDE:MSVC ++) printf和put in if语句在上面2个程序中有什么区别??

4 个答案:

答案 0 :(得分:4)

  • printf返回写入的字符数
  • puts会在成功时返回非负值

结果:

  • 在第一个代码中,printf返回一个正值,其值为trueelse分支从不执行,因此仅打印ABC
  • 在第二个代码中,puts很可能成功并返回0,其值为falseelse分支将被执行,从而打印ABC和{{1 }}

正如其他人所指出的那样,XYZ也会附加换行符,而puts则不会。{/ p>

答案 1 :(得分:3)

puts()附加换行符并返回一个不同的值(非负[可能包括0]成功,-1表示失败)。

答案 2 :(得分:1)

printf返回打印的字符数(因此,当成功打印非空强时,返回值不为0,因此在布尔上下文中为true),而puts只返回非 - 表示成功的负数(很可能是0,也就是假)。

答案 3 :(得分:0)

成功时

printf会返回写入的字符数3

成功时

puts会返回一个非负数,也可能是0。看起来它在你的情况下返回0,使else部分执行。