苯环的发现:C语言的一个小问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/24 21:52:54
main()
{ int a=1,b=2;
printf("a=%%d,b=%%d\n",a,b);
}
为什么输出后是
%d,%d
我认为是%1,%2
结果出来是%d,%d
不是a的值是1 b是2了吗?

因为你打了两个 % 号。
由于百分号是特殊字符,如果你需要显示百分号,必须连写两个百分号。你现在的写法,编译器会将两个百分号分析为输出一个百分号,然后后面的d就失去了特殊的含义了。

改为:

printf(\"a=%%%d,b=%%%d\\n\", a, b);

这样,前两个 %% 表示输出“%”,然后 %d 表示输出后面的参数值。

%%d,编译器采用从左到右的方式进行结合,结果就是%d
如果你想要%1,就是:%%%d,这样,%%输出一个%,%d输出一个1

printf("a=%%%d,b=%%%d\n", a, b);

楼上正解
%%就是输出%