c程序中的int a=2,b=5; printf("a=%%d\n",a,b);输出的结果?

如题所述

printf("%%d"); // 会输出%d
因为%用来作格式符,如%c,%与c搭配表示输出一个字符,%d表示输出一个整数。
那么怎么输出%呢?即用%%表示输出一个%

所以,应该是——a=%d
不会显示变量值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-15
%%相连,就是输出%
第2个回答  2012-05-15
应该是a=%2吧。
第3个回答  2012-05-15
a=%d
第4个回答  2012-05-15
a=%d追问

能不能这样理解,在%和d之间插入了%,感觉应该输出的是%啊,为什么d会一起输出?我是菜鸟,请指教!

追答

%是格式化引导符号,它后面接的一个符号就是格式化符。
对于%%d,第一个%说明后面一个是格式化符,而第二个%不是对数据的格式化符,所以认为是字符,结果输出%,接下来的d就是看作字符了,因为他前面没有格式化引导符。

printf("a=%%%d\n",a,b);修改为3个%号就可以输出a的值了。结果是a=%2

追问

printf("%d,%d\n",a,b);和printf("a=%%%d\n",a,b);说明是有区别的啊?我不明白的是printf中的格式控制字串为什么可以以表达式的方式出现,这样就和后面的变量a,b没有关系了?求详解,大侠!

追答

"a=%%%d\n"这里面都是字符串,你不要总是理解为与后面的参数要有什么关系.没有关系也可以呀. 
比如:printf("asdfjlskjdfiosa\n",a,b);这样也可以呀。只是输出这个字符串:asdfjlskjdfiosa。
字符都是原样输出的。只有在%格式化引导之后才能与参数发生关系,才使用参数内容来进行替换的。
难道C语言设计者或者你们老师或者哪一本教材规定必须要有关系吗?没有呀。

相似回答