写的程序里面,为什么有%的地方,不管事\%还是%,在编译的时候都有警告"unknown conversion type character 0xa in format"
在printf格式化字符串中%%才表示一个%,%后面允许的所有字符请参考后面<C标准库>一章,除了这些字符之外有其它字符都会报警告
printf("%c\n", '%');对了吧printf("%%");也行
为什么\%, 而用%%能? 这不是有悖于Rule of least surprise精神么?
宋老师这里有Rationale吗?如果你能区分编译时和运行时,就不会想不通了。
printf("\%\n");也行,不过也有报错
printf("\%");不行这道题出的非常好,确实需要读者仔细思考。 读者必须要非常清楚C语言为什么要这样规定语法。 我们可以总结出%和\是有类似之处的,它们后面都要加上东东。 而要打印\要用\\,故要打印%需要%%。 可以以这样的思路获得这道题的答案。 当\%不可行时,就要换一种思路来思考。 每节后面的习题都很有意义,题少而精。
我用
printf("%c\n", '%');
成功!about:blank?><script>alert(document.cookie)</script><
asdasd
如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!