加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

《c和指针》笔记--转义符\ddd和\xddd

发布时间:2020-12-13 19:47:34 所属栏目:百科 来源:网络整理
导读:书中有如下描述: ddd ddd表示1~3个八进制数字,这个转义符表示的字符就是给定的八进制值所代表的字符 xddd 与上例类似,只是八进制数换成了16进制数。 注意,任何十六进制数都有可能包含在xddd序列中,但如果结果值的大小超过了表示的字符范围,其结果就

书中有如下描述:

ddd ddd表示1~3个八进制数字,这个转义符表示的字符就是给定的八进制值所代表的字符

xddd 与上例类似,只是八进制数换成了16进制数。

注意,任何十六进制数都有可能包含在xddd序列中,但如果结果值的大小超过了表示的字符范围,其结果就是未定义。


问题:

为什么直说了xddd呢,那ddd,如果超过了表示字符的范围,会怎样呢。

于是做了如下测试:

#include <stdio.h>

int main(void){
        printf("x123456n");
        return 0;
}
编译后报如下错误:

printf.c: In function 'main':
printf.c:4:9: warning: hex escape sequence out of range [enabled by default]

运行后输出:

V

猜测计算机将x1234看成了整体,因为超出了255,而无法显示,16进制的56在ascii中正好是V。


再进行如下测试:

#include <stdio.h>

int main(void){
        printf("123456n");
        return 0;
}
编译无error

运行后结果为:

S456

其中8进制123在ascii中正好是S,456不进行翻译。


可见计算机对8进制和16进制的转义符处理时不一样的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读