#include <stdio.h>
int main()
{
char string[]="Programming Language";
printf(string);
printf("\n%s",string);
return 0;
}
编程语言
编程语言
为什么相同的输出?
#include <stdio.h>
int main()
{
char string[]="Programming Language";
printf(string);
printf("\n%s",string);
return 0;
}
编程语言
编程语言
为什么相同的输出?
当printf
解析它打印字符格式字符串不是格式说明符,因为它们是。
所以当它解析"Programming Language"
它只是回声每个字符。
第一个printf语句是一样的:
printf("Programming Language");
和你的第二个printf语句是一样的: (因为“占位”获取与变量替换,+在开始一个新行)
printf("\nProgramming Language");
所以这就是为什么它是相同的输出
他们不一样。第二个包括一个不包含在第一个中的新行。
如果去掉换行,他们将是相同的,因为:
第一个版本仅输出string
内容。
第二版使用%s
,将其替换为string
的内容。
无论哪种方式,结果都是一样的。
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!
如果'string'中有'%'符号(可怕的变量名称),那么输出将会不同。 – DCoder
您不应该在不控制格式的情况下调用printf。如果用户输入中有'%',则会出现意外的行为。 – eyalm