码迷,mamicode.com
首页 > 其他好文 > 详细

\ddd和\xddd 转义序列

时间:2015-06-27 11:24:41      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

转自  http://blog.csdn.net/todd911/article/details/8851475

书中有如下描述:

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

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

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

 

问题:

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

于是做了如下测试:

 

[cpp] view plaincopy
 
  1. #include <stdio.h>  
  2.   
  3. int main(void){  
  4.         printf("\x123456\n");  
  5.         return 0;  
  6. }  

编译后报如下错误:

 

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。

 

再进行如下测试:

 

[cpp] view plaincopy
 
  1. #include <stdio.h>  
  2.   
  3. int main(void){  
  4.         printf("\123456\n");  
  5.         return 0;  
  6. }  

编译无error

 

运行后结果为:

S456

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


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

\ddd和\xddd 转义序列

标签:

原文地址:http://www.cnblogs.com/QingCHOW/p/4603720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!