overflow in implicit constant convertion是什么问题

howema 2009-08-11 10:05:31
#define BB 0x80
int fun()
{
char v = BB;
...
return 0;
}
提示overflow in implicit constant convertion
不知道是什么问题?
...全文
1120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kojie_chen 2009-08-11
  • 打赏
  • 举报
回复
我擦
飞天御剑流 2009-08-11
  • 打赏
  • 举报
回复
这个问题涉及两处实现相关的地方。

char的类型,标准规定可以是signed char,也可以是unsigned char,编译器可以自行选择。

0x80属于int类型,其值为128。在char为singned char的环境中,128超过一字节signed char的表示范围,会被转换成什么也是实现相关的。在char为unsinged char环境中,128在unsigned char表示范围内,其值不变。

不过,楼主的编译器在这里使用到一个词overflow不太妥当,overflow是表达式计算中的概念,而数值转换是没有overflow的。
raley29 2009-08-11
  • 打赏
  • 举报
回复
0x80换成2进制是10000000,十进制是128,貌似char是-128到127
baihacker 2009-08-11
  • 打赏
  • 举报
回复
C中0x80是具有int类型的,你用int的来初始化一个char...
并且是超过char的范围的。。。当然就这样了。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧