2014-12-29 91 views
0
#include <stdio.h> 

int main() 
{ 
    char string[]="Programming Language"; 

    printf(string); 

    printf("\n%s",string); 

    return 0; 
} 

输出printf如何在没有修饰符的情况下工作?

编程语言
编程语言

为什么相同的输出?

+2

如果'string'中有'%'符号(可怕的变量名称),那么输出将会不同。 – DCoder

+3

您不应该在不控制格式的情况下调用printf。如果用户输入中有'%',则会出现意外的行为。 – eyalm

回答

3

printf解析它打印字符格式字符串不是格式说明符,因为它们是。

所以当它解析"Programming Language"它只是回声每个字符。

3

第一个printf语句是一样的:

printf("Programming Language"); 

和你的第二个printf语句是一样的: (因为“占位”获取与变量替换,+在开始一个新行)

printf("\nProgramming Language"); 

所以这就是为什么它是相同的输出

2

他们不一样。第二个包括一个不包含在第一个中的新行。

如果去掉换行,他们将是相同的,因为:

  1. 第一个版本仅输出string内容。

  2. 第二版使用%s,将其替换为string的内容。

无论哪种方式,结果都是一样的。

0

printf的第一个参数可能包含除修饰符之外的纯文本。所以基本上就等于了。 %s是有用的,当你想包含一些字符串在其他例如:

printf ("One Two %s Four Five (%d, %d, %d, %d, %d)", "Three", 1, 2, 3, 4, 5); 

使用%s修饰符独立很无意义。只需记住一件事 - 如果您没有使用%s修饰符并将字符串作为第一个参数传递,则应引用%符号。例如:

printf ("I am 100%% sure that it would works!"); 

所以基本上只是单一%符号你需要使用双%(%%)。即使在情况下,你把它作为一个变量:

char s [] = "50%% complete"; 
printf (s); 

希望它让SENCE!

相关问题