在小白第一章后面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)
%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