#include<stdio.h>
int main()
{
int a;
printf("%..geeksforgeeks..%");
getchar();
return 0;
}
输出:%.0.geeksforgeeks..%
答案 0 :(得分:4)
在printf格式字符串中,%
用于表示转换的开始,例如%d
表示整数,%f
表示浮点数。
如果您尝试打印实际的百分号,请在格式字符串中使用%%
。
或者,如果要将其作为文字字符串打印,请不要将其作为格式字符串提供:
printf("%s", "%..geeksforgeeks..%");
答案 1 :(得分:1)
我不确定为什么会得到这个确切的输出,但问题是printf
使用%
作为元字符,所以如果要打印文字百分号,你必须加倍。
printf("%%..geeksforgeeks..%%\n")
或者,不要使用printf
来打印文字字符串:
fputs("%..geeksforgeeks..%\n", stdout);
从技术上讲,在printf
字符串中有更多“实时”(未加倍)%符号而不是附加参数(要格式化的项目)的数量会触发未定义行为,意味着允许C库执行它想要的任何内容,从这种轻微的令人惊讶的行为,包括崩溃你的整个计算机。