[学习资料] 如果目标类型的存储范围小于源类型,则可能发生数据丢失。

[复制链接]
 楼主| t60yz 发表于 2025-3-24 13:42 | 显示全部楼层 |阅读模式
可能发生数据丢失的情况
如果目标类型的存储范围小于源类型,则可能发生数据丢失。例如:

cpp
复制
编辑
int largeNum = 1000;
char smallNum = (char)largeNum;  // 可能发生溢出
printf("%d\n", smallNum);  // 结果可能不是 1000
char 只能存储 -128 ~ 127(如果是 signed char)。

1000 超出范围,可能导致数据截断或溢出。

在 Python 这种 动态类型 语言中不会有这个问题:

python
复制
编辑
largeNum = 1000
smallNum = chr(largeNum)  # 正常转换
print(smallNum)
但如果 largeNum 超出 chr() 的范围(0~1114111),会抛出异常。

21mengnan 发表于 2025-3-24 16:26 | 显示全部楼层
对,会溢出,甚至跑飞。
xuanhuanzi 发表于 2025-3-25 11:16 | 显示全部楼层
这个情况我遇到过,因为数据类型不同,导致BUG
xinxianshi 发表于 2025-3-27 12:08 | 显示全部楼层
用格式化打印到字符串可以解决很多问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

187

主题

1189

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部