1
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' is octal escape sequence out of range? 这个范围是多少?

4

2 回答 2

6

从 C99 规范,§6.4.4.4 第 9 段:

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

于 2012-04-02T13:50:51.963 回答
4

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

于 2012-04-02T13:43:52.810 回答