打印
[C语言]

有符号数相乘的问题

[复制链接]
811|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序会不会|  楼主 | 2016-10-25 00:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在编写程序用到了两个有符号相乘的问题!
刚开始是这样的:
int a=-13;
char b[8]={128, , ,, } 第一个数是128 后面的没有写出来
long c=0;
当执行下面这个语句的时候得出的结果刚好符号相反
c=a*b;
c=0x680结果是正的,其实按照运算结果应该为负
当我把 a=13的时候  c=a*b=0xF980 为负数
结果的符号刚好和理论相反

也在网上搜索了一下,说是C语言中两个数相乘 是按照intl类型相乘的结果还是int
所以有可能是溢出导致的问题所以将程序改为    ps:即使是int相乘 上面的 c=a*b会溢出吗?

c=(long)a*b;  但是这样结果依然差了一个符号
但是当我把数组 char b[]类型改为 int b[]的时候结果就是正确的 int和char相乘的时候不是将char 强制转换成 int类型了吗 这是为什么呢
用的是 c51 v.900版本
谢谢

相关帖子

沙发
程序会不会|  楼主 | 2016-10-25 01:12 | 只看该作者
我把char型的取值范围搞错了!汗!

使用特权

评论回复
板凳
dirtwillfly| | 2016-10-25 08:14 | 只看该作者
程序会不会 发表于 2016-10-25 01:12
我把char型的取值范围搞错了!汗!

能者自答

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

443

帖子

5

粉丝