如果没有修饰符,printf如何工作?

时间:2014-12-29 18:20:46

标签: c printf

#include <stdio.h>

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

    printf(string);

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

    return 0;
}

输出

  

编程语言
   编程语言

为什么输出相同?

4 个答案:

答案 0 :(得分:3)

第一个printf语句与:

相同
printf("Programming Language");

和你的第二个printf语句是一样的: (因为'占位符'被变量替换,在开头加上一个新行)

printf("\nProgramming Language");

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

答案 1 :(得分:3)

printf解析格式字符串时,它会打印出非格式说明符的字符。

因此,当它解析"Programming Language"时,它只会回应每个角色。

答案 2 :(得分:2)

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

如果删除换行符,它们将是相同的,因为:

  1. 第一个版本只打印string

  2. 的内容
  3. 第二个版本使用%s,后面会替换为string的内容。

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

答案 3 :(得分:0)

printf的第一个参数可以包含除修饰符之外的纯文本。所以基本上它等于。当你想在其他例如:

中包含一些字符串时,%s很有用
printf ("One Two %s Four Five (%d, %d, %d, %d, %d)", "Three", 1, 2, 3, 4, 5);

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

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

所以基本上只需要单个%符号就可以使用double%(%%)。即使在你将它作为变量传递的情况下:

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

希望它能有所作为!