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

用格式化打印到字符串可以解决很多问题。
页: [1]
查看完整版本: 如果目标类型的存储范围小于源类型,则可能发生数据丢失。