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'八进制转义序列超出范围?这个范围是什么?
答案 0 :(得分:6)
根据C99规范,§6.4.4.4第9段:
八进制或十六进制转义序列的值应在 for的unsigned char类型的可表示值范围 整数字符常量,或对应的无符号类型 wchar_t用于宽字符常量。
答案 1 :(得分:4)
上限通常为255,即'\377'
。这假定为8位字符类型,C不能保证,但在大多数环境中是安全的假设。