c中八进制转义序列的范围是多少?

时间:2012-04-02 13:42:04

标签: c escaping octal

Code
#include<stdio.h>
int main()
{
int i;
printf("%d \n",'\1');
printf("%d \n",'\022');
printf("%d ",'\555');
return 0;
}

输出: 1 18 109

当我们编译这个程序时,gcc编译器发出警告'\ 555'八进制转义序列超出范围?这个范围是什么?

2 个答案:

答案 0 :(得分:6)

根据C99规范,§6.4.4.4第9段:

  

八进制或十六进制转义序列的值应在   for的unsigned char类型的可表示值范围   整数字符常量,或对应的无符号类型   wchar_t用于宽字符常量。

答案 1 :(得分:4)

上限通常为255,即'\377'。这假定为8位字符类型,C不能保证,但在大多数环境中是安全的假设。