负值及强转在C++程序在Debug和Release模式下编译的差别

负值及强转在C++程序在Debug和Release模式下编译的差别:

问题描述:

        在调用自动曝光程序时,需要将红外图像传进去,红外图像需要单独计算得到,其中包含数据类型转换;

        我在使用时,是将int型做减法运算后强制转换为unsigned short int型,在Debug模式下编译,程序运行,自动曝光程序生效;

        在Release模式下运行时,自动曝光程序失效。

可能原因:

        调试发现,int型数据在做减法时可能会出现负值,然后强转为USHORT型,在Debug模式下的强转与Release模式下强转可能会有所不同,导致最终的数据不同。

  可能Debug模式下当数组为空时,取元素时会是一个负值,仍然做运算,而Release模式下这种情况可能是不同的,以及后面强转时也是不同的。

 

posted @ 2020-02-26 11:50  zarjen  阅读(171)  评论(0编辑  收藏  举报