解决问题背后的原因

时间:2010-07-10 06:41:04

标签: c formatting printf

以下是什么输出,背后的原因是什么?

main()
{
    printf("%%%%");
}

答案是“%%”,但我不知道为什么。

4 个答案:

答案 0 :(得分:8)

%是格式说明符的开头。 (例如,"%d"表示“打印int”。)格式说明符转义后的%,打印单个“%”。

也就是说,"\\"以相同的方式产生一个反斜杠,"%%"会产生一个百分号。

答案 1 :(得分:3)

从技术上讲,输出可能是任何内容,因为你最后没有打印换行符,也因为你没有包含stdio.h: - )。

然而,纠正两个错误:

#include <stdio.h>

int main(void)
{
    printf("%%%%\n");
    return 0;
}

上面应该打印%%后跟换行符。

  

每个转换规范都由字符%。

引入      

...

     

转换说明符及其含义为:

     

...

     

%:写入%个字符。没有参数被转换。完整的转换规范应为%%

(C99 7.19.6.1)。

答案 2 :(得分:1)

在printf中,%通常用于表示%s%d%5.2f等令牌。如果要输出文字%,请使用%%

答案 3 :(得分:0)

Format specifiers are typically introduced by a % character,
and a literal percent sign can be copied into the output 
using the escape sequence %%.

Source

因此,您可以使用%%在输出中打印%。该问题有一系列%符号,因此输出为%%。