C语言的一个小问题

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 表示输出后面的参数值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-08-07
%%d,编译器采用从左到右的方式进行结合,结果就是%d
如果你想要%1,就是:%%%d,这样,%%输出一个%,%d输出一个1
第2个回答  2006-08-07
printf("a=%%%d,b=%%%d\n", a, b);
第3个回答  2006-08-07
楼上正解
%%就是输出%
相似回答