错误:隐式常量转换溢出 [-Werror=overflow]
#include<stdio.h>
int main()
{
char ch=200;
printf("\n%d",ch);
return 0;
}
我在http://ideone.com/YNkKT6#view_edit_box上运行此代码并获得隐式转换错误。我需要什么修改,原因是什么?
错误:隐式常量转换溢出 [-Werror=overflow]
#include<stdio.h>
int main()
{
char ch=200;
printf("\n%d",ch);
return 0;
}
我在http://ideone.com/YNkKT6#view_edit_box上运行此代码并获得隐式转换错误。我需要什么修改,原因是什么?
n3376 3.9.1/1
普通字符、有符号字符和无符号字符是三种不同的类型。char、signed char 和 unsigned char 占用相同的存储量并具有相同的对齐要求(3.11);也就是说,它们具有相同的对象表示。
什么是char
实现定义的,因此,您需要unsigned char
在这里处理值 (0-255)。
看起来像你的char
is signed char
,它接受从 -128 到 127 的值。而 200 对它来说太大了,会溢出成为负数。
修复它,更改char
为int
或unsigned char
int main()
{
unsigned char ch=200;
printf("\n%d",ch);
return 0;
}