printf("%d %d %d",'\8','\10','\63');
和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位十六进制所代表的任意字符 二位十六进制
'\8' 其实系统认为它是一个八进制的数值表示的字符 可是8并不是八进制可以表示的字符
所以用gcc编译的时候会报warning
warning: unknown escape sequence: '\8' [enabled by default]
但是编译器会自动优化为字符'8' ,所有用%d还是可以输出字符'8'在ascii码的顺序号56
56 8 51
1. ''代表一个char
\8代表这个char
而你用printf %d 转换为 十进制
如果你用%c就可以显示8这个字符
你现在的代码相当于
char a='\8';
int i=a;
cout<<a<<endl;
cout<<i<<endl;
这样输出就是 8 和 56
楼上说的不对,只是8对起来了,后面的都不行,换成1 和 6 也 不对
楼主应该好好看下转义字符这章 去了解下 \ddd \xhh 分别代表什么意思 然后你的这个问题就不是什么问题
void main()
{
printf("%o\n",10);
printf("%d\n",'\65');
printf("%c\n",'\65');
}
输出的头个是12 第二个是 53,第三个是 5
‘\65’的意思是65是以十进制数 在输出是先转化为8进制的数53然后再以字符形式输出对应的便是5
如果在原数字'\X' X应该不超过八进制数范围要求
结果应该是:56 8 51