递归火山软件开发平台

标题: 不知道是不是BUG,长短整数相加溢出未报错,给了错误答案 [打印本页]

作者: zhujiushij    时间: 2024-8-11 00:25
标题: 不知道是不是BUG,长短整数相加溢出未报错,给了错误答案
<火山程序 类型 = "通常" 版本 = 1 />

变量 局_数据1 <类型 = 整数 值 = 100>
变量 局_数据2 <类型 = 长整数>
局_数据1 = 2000
局_数据2 = 88000

变量 局_数据3 <类型 = 长整数>
变量 局_数据4 <类型 = 短整数>

局_数据3 = 局_数据2 + 局_数据1
调试输出 (局_数据3)
// 局_数据4 = 局_数据2 + 局_数据1    错误: 将"长整数"数据类型数据转换到"短整数"时存在数据精度损失的情况
// 局_数据4 = (整数)局_数据2 + 局_数据1    错误: 将"整数"数据类型数据转换到"短整数"时存在数据精度损失的情况
局_数据4 = (短整数)局_数据2 - (短整数)局_数据1
调试输出 (局_数据4)
-------------------------------------------------------------------------------------------------------

--- 开始调试当前项目"第三课"编译后的结果文件"D:\huoshansc\_int\第三课\debug\x64\linker\第三课.exe"
正在启动被调试程序
90000
20464
[内存监测]: 在缓存池中峰值分配内存块数/缓存池总尺寸(预分配块数): 2 / 16384 , 总共分配了 5 次内存,有 4 次在缓存池中分配,比例为 80% .
被调试程序已经退出,退出码为0x0.
调试已经停止



20464哪来的?


作者: 793359277    时间: 2024-8-11 00:40
88000早超过短整数范围了,强转肯定丢失精度
88000 = 0x157C0 强转短整数等于0x57C0 = 22464
最后-2000你说值是多少
作者: zhujiushij    时间: 2024-8-11 00:47
793359277 发表于 2024-8-11 00:40
88000早超过短整数范围了,强转肯定丢失精度
88000 = 0x157C0 强转短整数等于0x57C0 = 22464
最后-2000你说 ...

额,是这么个强转法!




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4