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

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-18 08:46:15

15

主题

59

回帖

2443

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2025-05-11 11:03:06
已绑定手机

36

主题

563

回帖

1972

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:409
  • 最近打卡:2025-06-17 00:48:11

8

主题

353

回帖

2478

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:566
  • 最近打卡:2025-06-18 16:01:31
已绑定手机

50

主题

1816

回帖

3138

积分

论坛元老

积分
3138
发表于 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, 2025-6-18 17:30 , Processed in 0.132072 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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