加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

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

发布时间:2020-05-22 18:12:33 所属栏目:程序设计 来源:互联网
导读:书中有如下描述: 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进制的转义符处理时不一样的。

(编辑:安卓应用网)

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

    推荐文章
      热点阅读