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