错误:隐式常量转换溢出[-Werror = overflow]

时间:2013-05-16 05:59:59

标签: c++ c

错误:隐式常量转换溢出[-Werror = overflow]

#include<stdio.h>

int main()
{ 
    char ch=200;
    printf("\n%d",ch);
    return 0;
}

我在http://ideone.com/YNkKT6#view_edit_box上运行此代码并获取隐式转换错误。 我需要进行哪些修改以及原因是什么?

2 个答案:

答案 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)

看起来charsigned char,它接受​​-128到127之间的值.200对于它太大而且会溢出为负数。

要解决此问题,请将char更改为intunsigned char

int main()
{ 
    unsigned char ch=200;
    printf("\n%d",ch);
    return 0;
}