Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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? 这个范围是多少?
从 C99 规范,§6.4.4.4 第 9 段:
对于整数字符常量,八进制或十六进制转义序列的值应在 unsigned char 类型的可表示值范围内,或者对于宽字符常量,对应于 wchar_t 的无符号类型。
上限通常为 255,即'\377'. 这假定为 8 位 char 类型,C 不保证这一点,但在大多数环境中是一个安全的假设。
'\377'