0
我有以下代碼: 「OK!」優化器錯誤或未定義的行爲?
#include <math.h>
#include <stdio.h>
using u16 = unsigned short int;
using s16 = signed short int;
using s32 = signed int;
s16 Algorithm(s16 sample)
{
s32 absSample = static_cast<s32>(abs(sample));
s32 sampleBits = absSample >> 7;
s32 sampleMasked = absSample & 0x7F;
s16 result = (u16)(sampleMasked << sampleBits) | (u16)(1 << (sampleBits - 2));
if (sample < 0)
{
result = -result;
}
return result;
}
int main()
{
s16 result = Algorithm(-63);
if (result == -63)
{
printf("OK!\n");
return 0;
}
else
{
printf("BUG!?\n");
return 1;
}
}
在64位調試它打印但在x64發行版中,它會打印出「BUG !?」,我的代碼有問題,或者編譯器在這裏做錯了什麼?我如何解決或解決此問題?
只是確保,你有更新3修補程序(假設你使用MSVC 2015)? – user975989
我目前正在更新2,這是更新3中的某些內容嗎? – paulm
我不太確定,我只是認爲這可能是相關的。 – user975989