#include <stdio.h> int main() { printf("%%/n"); return 0; }
那直接 printf("%\n"); 不也行吗
露个头
码匠 code_smith@sohu.com 2009-09-03 12:42:23 printf("%%");也行 为什么\%, 而用%%能? 这不是有悖于Rule of least surprise精神么? 宋老师这里有Rationale吗? 宋劲杉 songjinshan@gmail.com 2009-09-24 22:47:39 如果你能区分编译时和运行时,就不会想不通了。 还是不能理解,为什么\%就不行,这与编译时和运行时的区别有什么关系?
printf("%c",'%')
若干年后才想明白宋老师的话:"如果你能区分编译时和运行时,就不会想不通了。" '%'对编译器来说是一个普通符号,并不需要转义。%%的用法是printf中的用法,%号对printf来说是特殊的。
printf("%c\n",'%');通过ok!
写的程序里面,为什么有%的地方,不管事\%还是%,在编译的时候都有警告"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
浮点数输出: character: } integer: 34 floating point: 3.140000 测试环境:ubuntu11.04
确实,用%%和用printf("%c",'%')均可,当然后面的那种方式更容易被理解
为什么我的 printf("%%"); 没有输出任何东西 gcc4.4.3
如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!