0
#include<stdio.h>
int main()
{
int a;
printf("%..geeksforgeeks..%");

getchar();
return 0;
}

输出 :%.0.geeksforgeeks..%

谁能解释为什么???

4

2 回答 2

4

在 printf 格式字符串中,%用于表示转换的开始,例如%d用于整数或%f浮点。

如果您尝试打印出实际的百分号,%%请在格式字符串中使用。

或者,如果要将其打印为文字字符串,请不要将其作为格式字符串提供:

printf("%s", "%..geeksforgeeks..%");
于 2013-06-10T15:26:24.540 回答
1

我不确定你为什么得到这个确切的输出,但问题是它printf用作%元字符,所以如果你想打印一个文字百分号,你必须把它加倍。

printf("%%..geeksforgeeks..%%\n")

或者,不要printf用于打印文字字符串:

fputs("%..geeksforgeeks..%\n", stdout);

从技术上讲,printf字符串中的“实时”(未加倍) % 符号比附加参数(要格式化的项目)的数量多会触发未定义的行为,这意味着 C 库可以做任何它想做的事情,范围从轻微的像这样的令人惊讶的行为,包括使整个计算机崩溃。

于 2013-06-10T15:27:50.553 回答