printf输出%和\
在小白第一章后面1.5.3中有仨题:
1 试着把%d中的两个字符(百分号和小写字母d)输出到屏幕。
2 试着把\n中的两个字符(反斜线和小写字母n)输出到屏幕。
3 像 1、2这样需要“特殊方法”才能输出的东西还有哪些?哪些是printf函数引起的问题,哪些不是。
首先 2 很简单 就 printf("\\n")就行 ,这就是需要转义\。转义字符还有很多。
其次 1 跟2不一样,vc表示 不能识别/%,那就依靠强大的搜索引擎。
方法为
#include <stdio.h> int main(void) { printf("%c\n", '%'); return 0; }
和
printf("%%d");//这个 puts("%d");//或者是这个
其三,当需要显示类似的东西是,/容易让编译器理解为转义字符。在printf函数中%是用来表示格式化输出的,所以想要在printf中显示%需要在2中的方法。
第四,那么/1 会显示什么呢,这个在转义字符的百度百科上受到到了疑惑,来源如下
http://baike.baidu.com/link?url=FXPtbNIAaeHcVaEGDvpL__ivSz_a3zaCn1l7v3CdA3hiXSGom5hNr7n-_my6SthU
“所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。”
自己试了试 ,显示全部的ascii码
for(i=0;i<200;i++) printf("%c",i);
虽然受到了百度百科的启发,但感觉想要用“/”+“变量名”的方法来写个循环式,来表示ascii码就走错路了。
第五 贴上/ 和%
%的
%A 浮点数、十六进制数字和p-记法(C99)
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0f的无符号十六进制整数
%% 打印一个百分号
转义字符 | 意义 | ASCII码值(十进制) |
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符''\' | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
第六 来源 http://www.kuqin.com/language/20080420/7060.html
http://baike.baidu.com/link?url=FXPtbNIAaeHcVaEGDvpL__ivSz_a3zaCn1l7v3CdA3hiXSGom5hNr7n-_my6SthU
http://zhidao.baidu.com/question/401467259.html
http://zhidao.baidu.com/question/557217994.html