找回密码
 立即注册
楼主: dws1966

请教C51中的一个数学运算错误 | 强制类型转换

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:799
  • 最近打卡:2026-04-12 11:58:43

17

主题

77

回帖

3708

积分

论坛元老

积分
3708
发表于 2024-6-10 10:55:12 | 显示全部楼层
jw*** 发表于 2024-6-10 06:37
看看这是不是你要的数?就取了低32位

请教先生 :    怎么设置成黑底白字的?   谢谢
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:272
  • 最近打卡:2026-04-12 13:55:02
已绑定手机

48

主题

585

回帖

2113

积分

荣誉版主

积分
2113
发表于 2024-6-10 14:04:58 | 显示全部楼层
m1参与运算时强转为ulong就行了,
格式不一致,
先进行强转,
再进行运算,
运算有顺序,
再处理结果。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:691
  • 最近打卡:2026-04-12 00:39:32

9

主题

628

回帖

4368

积分

论坛元老

积分
4368
发表于 2024-6-10 16:09:23 | 显示全部楼层
编译器处理表达式默认把所有数值转换成表达式里最高数据类型进行运算,
这里表达式中m1是uint类型,1000也会当成int类型,所以导致运算结果越界错误,
两个办法解决,
1,在m1或者1000前增加强制类型转换符,   (ulong)m1*1000;或者m1*(ulong)1000;
2.常数加UL后缀,指定常数类型为ulong类型, m1*1000UL;
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:861
  • 最近打卡:2026-04-12 08:11:58
已绑定手机

58

主题

2017

回帖

3771

积分

论坛元老

积分
3771
发表于 2024-6-10 21:49:22 | 显示全部楼层
wjhh*** 发表于 2024-6-10 10:55
请教先生 :    怎么设置成黑底白字的?   谢谢

你说计算器的那个啊,那是win11自带的啊
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-08-29 08:02:23

4

主题

4

回帖

90

积分

注册会员

积分
90
发表于 2024-6-17 08:20:00 | 显示全部楼层
真的又学到了,谢谢!
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-4-12 17:52 , Processed in 0.105067 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表