负值及强转在C++程序在Debug和Release模式下编译的差别
负值及强转在C++程序在Debug和Release模式下编译的差别:
问题描述:
在调用自动曝光程序时,需要将红外图像传进去,红外图像需要单独计算得到,其中包含数据类型转换;
我在使用时,是将int型做减法运算后强制转换为unsigned short int型,在Debug模式下编译,程序运行,自动曝光程序生效;
在Release模式下运行时,自动曝光程序失效。
可能原因:
调试发现,int型数据在做减法时可能会出现负值,然后强转为USHORT型,在Debug模式下的强转与Release模式下强转可能会有所不同,导致最终的数据不同。
可能Debug模式下当数组为空时,取元素时会是一个负值,仍然做运算,而Release模式下这种情况可能是不同的,以及后面强转时也是不同的。