#include <stdio.h>
int main(void)
{
char test = 0x80;
printf("%c\n", test); /* To remove the "unused" warning */
return 0;
}
我知道一个字符保证是一个字节。0x80 也是一个字节。那么为什么我会收到以下错误/警告?
错误:隐式常量转换溢出 [-Werror=overflow]
就我而言,这是一个错误,因为我将警告视为错误。
0x80 是出现此警告/错误的最小值。如果我将其更改为 0x7F,则可以正常编译。我使用带有“C99 strict”选项的ideone.com来编译代码。它报告使用 gcc-4.7.2。