能不能这样理解,在%和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语言设计者或者你们老师或者哪一本教材规定必须要有关系吗?没有呀。