c语言数据类型方面的问题,请大家看看为什么计算会溢出?

[复制链接]
查看11 | 回复2 | 2013-1-29 14:47:21 | 显示全部楼层 |阅读模式
你是想让他们做乘法运算吗?如果是的话,你需要改成这样: (signed int)(((signed long)0x00fb8c00*((signed long)0x00666666))>>24);因为在C语言运算里面,取值*运算符的优先级最高,所以变成了这样:(signed int)(((signed long)0x00fb8c00(*(signed long)0x00666666))>>24); 会把0x00666666地址里面的signed long型的数据读取出来在进行运算。所以会报错!...
回复

使用道具 举报

千问 | 2013-1-29 14:47:21 | 显示全部楼层
v->Up = (signed int)(((signed long)0x00fb8c00*(signed long)0x00666666)>>24);运算的时候会是常数结果有符号长整型。下面的m*n就是一个值,你没有赋给任何变量,就是在内存中的一个值。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行