错误:隐式常量转换溢出[-Werror = overflow]
#include<stdio.h>
int main()
{
char ch=200;
printf("\n%d",ch);
return 0;
}
我在http://ideone.com/YNkKT6#view_edit_box上运行此代码并获取隐式转换错误。 我需要进行哪些修改以及原因是什么?
答案 0 :(得分:7)
n3376 3.9.1 / 1
Plain char,signed char和unsigned char是三种不同的类型。一个char,一个带签名的char和一个 unsigned char占用相同的存储量并具有相同的对齐要求(3.11);那是, 它们具有相同的对象表示。
什么是char
是实现定义的,所以,你需要unsigned char
来处理值(0-255)。
答案 1 :(得分:0)
看起来char
是signed char
,它接受-128到127之间的值.200对于它太大而且会溢出为负数。
要解决此问题,请将char
更改为int
或unsigned char
int main()
{
unsigned char ch=200;
printf("\n%d",ch);
return 0;
}