C语言这样输出的数字是什么?

printf("%d %d %d",'\8','\10','\63');
和ASCII码什么关系吗?
新手,不太明白。

6个回答

楼上解读有误啊
首先 \ 表示的是字符转义
所有的字符转义都是有规定的

\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

楼主应该好好看下转义字符这章 去了解下 \ddd \xhh 分别代表什么意思 然后你的这个问题就不是什么问题

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 也 不对

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐