我正在尝试使用MATLAB模拟32位有符号整数算法。 int32函数的行为不符合预期:
accu = 0
inc = 40000
accu = int32(accu + inc)
accu = int32(accu + inc)
accu = int32(accu + inc)
accu = int32(accu + inc)
分别相加后的acc值是40000、80000、120000,然后是-102144。我希望160000而不是负数,因为溢出应该只发生在第32位,而不是第18位。
很奇怪,
int32(120000 + 40000)
预期达到160000。使用上述变量时如何强制执行int32操作?
编辑:由于某些人无法重现此行为,因此我正在添加正在执行的操作的屏幕截图。
文件夹位于文件int32类型的重载plus运算符的路径中。因此,MATLAB仍然使用内置类型,但是替代内置类型执行了另一种操作,导致这种效果。