切换到宽版
左右分栏
统计
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
日志
群组
热榜
分享
记录
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
论坛
群组
火腿广场
手机客户端
帖子
用户
版块
帖子
搜索
PHPWIND
HELLOCQ
哈罗CQ火腿社区
>
单片机与自动控制
>
keil C高手请进,请教一道数学题
发帖
回复
返回列表
新帖
3913
阅读
6
回复
keil C高手请进,请教一道数学题
[复制链接]
上一主题
下一主题
离线
BG4ABM
UID:2169
注册时间
2002-10-28
最后登录
2025-05-20
在线时间
5316小时
发帖
1139
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
发帖
1139
加关注
发消息
只看楼主
倒序阅读
0楼
发表于: 2007-06-14
#include<reg51.h>
unsigned int m;
void main(void)
{
while(1)
{
m=255*251/128;
}
}
正确答案应该是500,可编译后单步运行并观察m,无论如何出不了这个数字,如果把乘法和除法分开来写成2行,就可以出来500了,请问这是为什么?
共
条评分
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
bellstudio
UID:826
注册时间
2002-05-09
最后登录
2025-05-28
在线时间
266小时
发帖
2820
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
2820
加关注
发消息
只看该作者
1楼
发表于: 2007-06-14
#include<reg51.h>
unsigned int m;
void main(void)
{
while(1)
{
m=(unsigned int)255*251/128;
m++;
}
}
前面运算溢出了
如果分开,系统作了隐式转换,这是基本的c问题,与keil无关
共
条评分
回复
举报
离线
BG4ABM
UID:2169
注册时间
2002-10-28
最后登录
2025-05-20
在线时间
5316小时
发帖
1139
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
1139
加关注
发消息
只看该作者
2楼
发表于: 2007-06-14
应该还是和keil有关的吧,我在别人的c编译器上试过,直接写成m=255*251/128就可以出来正确答案了.
共
条评分
回复
举报
离线
bellstudio
UID:826
注册时间
2002-05-09
最后登录
2025-05-28
在线时间
266小时
发帖
2820
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
2820
加关注
发消息
只看该作者
3楼
发表于: 2007-06-16
hehe
32位编译器的int是32位的
共
条评分
回复
举报
离线
bd1es
UID:658
注册时间
2002-04-08
最后登录
2021-10-22
在线时间
43小时
发帖
2096
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
2096
加关注
发消息
只看该作者
4楼
发表于: 2007-06-19
有意思,好像真是keil的bug,别的编译器没事。
共
条评分
回复
举报
离线
bd1es
UID:658
注册时间
2002-04-08
最后登录
2021-10-22
在线时间
43小时
发帖
2096
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
2096
加关注
发消息
只看该作者
5楼
发表于: 2007-06-27
今天无事,我用avr gcc又作了一遍,发现问题是一样的。
原因是:这样的计算在编译时完成,对目标程序来说只是load一个立即数。那么如果编译器错误认为运算是有符号的,就会产生溢出,除非强制通知编译器启用16位无符号运算。
我还是觉得这问题算编译器问题,保证最终结果正确本是编译器的职责,否则会害惨程序员的。以后干脆在常数运算式里写下一个“.”,都启用浮点运算挺好,
两种源码编译结果见下图,注意看编译器的警告信息:
图片:zzz.gif
图片:zzy.gif
共
条评分
回复
举报
离线
firetiger
UID:44654
注册时间
2007-07-09
最后登录
2007-07-09
在线时间
0小时
发帖
5
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
5
加关注
发消息
只看该作者
6楼
发表于: 2007-07-09
bellstudio 兄说的对!
共
条评分
回复
举报
发帖
回复
返回列表
https://www.hellocq.net/forum
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
隐藏
快速跳转
火腿资讯区
中国QSL卡片管理局
公告通知
各地火腿活动专题
火腿交流区
火腿神聊
新手培训班
莫尔斯电码 - CW
QSL卡展板
火腿技术区
DX通信
QRP and DIY
设备
天线和铁塔
V/UHF和移动通信
卫星和空间通信
APRS专题
业余无线电应急通信
火腿资源区
FlexRadio SDR收发机
现代通信
业余无线电器材信息
EchoLink/IRLP/远程电台及其他VoIP技术专区
火腿文化
ARDF - 业余无线电测向
计算机应用及数码产品
《电子制作》杂志
邻家火腿快讯
单片机与自动控制
HAM软件、HAM网站
业余无线电中文计划
HELLOCQ火腿社区版务工作室
关闭
关闭
选中
1
篇
全选