找回密码
 立即注册
查看: 610|回复: 6

C语言有符号数进位陷阱,进来看了多活一小时

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2026-04-02 08:56:15
已绑定手机

104

主题

4229

回帖

9395

积分

荣誉版主

无情的代码机器

积分
9395
发表于 2025-8-18 18:51:16 | 显示全部楼层 |阅读模式

位操作需要区分有符号数和无符号数!!!
通过汇编代码看,|=操作时,有符号char类型提升为四字节类型|=的,也就是说当符号位为1时,提升后前三个字节全是0xFF和a 或等操作,会重刷掉a存储的前三字节。

截图202508181848394455.jpg
截图202508181848163827.jpg

截图202508181848493184.jpg






三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:725
  • 最近打卡:2026-03-30 12:09:34
已绑定手机

97

主题

7246

回帖

1万

积分

超级版主

积分
13798
发表于 2025-8-18 19:05:07 | 显示全部楼层
我是不需要负数计算的,一律用无符号,从未出过这个问题
好习惯可以避免很多问题

点评

+1,无符号省事  详情 回复 发表于 2025-8-18 19:12
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2026-04-02 08:56:15
已绑定手机

104

主题

4229

回帖

9395

积分

荣誉版主

无情的代码机器

积分
9395
发表于 2025-8-18 19:12:52 | 显示全部楼层
Debu*** 发表于 2025-8-18 19:05
我是不需要负数计算的,一律用无符号,从未出过这个问题
好习惯可以避免很多问题
...

+1,无符号省事
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:704
  • 最近打卡:2026-04-02 01:00:09
已绑定手机

49

主题

2648

回帖

2899

积分

荣誉版主

积分
2899
发表于 2025-8-19 01:20:38 | 显示全部楼层
除了快速判断数值正负,从来不会对有符号类型和浮点类型位操作,这样避免很多问题。
~~~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:626
  • 最近打卡:2026-03-15 21:16:55
已绑定手机

5

主题

270

回帖

2206

积分

金牌会员

积分
2206
发表于 2025-8-19 09:18:08 | 显示全部楼层
是的,有符号类型的数据不要进行位操作,有意想不到的后果。一般都变成无符号数,在进行位操作。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:25
  • 最近打卡:2026-02-27 18:14:04

3

主题

217

回帖

1293

积分

金牌会员

积分
1293
发表于 2025-8-19 18:33:41 | 显示全部楼层
32位数和8位数进行运算,8位数肯定要做符号扩展
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:588
  • 最近打卡:2026-04-02 07:05:27
已绑定手机

24

主题

527

回帖

1255

积分

金牌会员

积分
1255
发表于 2026-1-30 18:00:07 | 显示全部楼层
看看确实有用,自己编程时小心为好
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-2 18:16 , Processed in 0.114326 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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