3

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

#include<stdio.h>

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

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

4

2 回答 2

9

n3376 3.9.1/1

普通字符、有符号字符和无符号字符是三种不同的类型。char、signed char 和 unsigned char 占用相同的存储量并具有相同的对齐要求(3.11);也就是说,它们具有相同的对象表示。

什么是char实现定义的,因此,您需要unsigned char在这里处理值 (0-255)。

于 2013-05-16T06:01:31.370 回答
0

看起来像你的charis signed char,它接受从 -128 到 127 的值。而 200 对它来说太大了,会溢出成为负数。

修复它,更改charintunsigned char

int main()
{ 
    unsigned char ch=200;
    printf("\n%d",ch);
    return 0;
}
于 2013-05-16T06:02:22.217 回答