0
私は、次のコードを持っている:それは印刷さx64のデバッグでオプティマイザのバグまたは未定義の動作ですか?
#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;
}
}
を "OK!"しかし、x64リリースでは "BUG !?"という文字が印刷されています。私のコードに問題がありますか、ここで何か間違っているのですか?この問題を解決するにはどうすればよいですか?
ちょうど(あなたが使用していると仮定してください、あなたはアップデート3用の修正プログラムを持っています作る:)発生する可能性がありますMSVC 2015)? – user975989
私は現在アップデート2に入っていますが、これはアップデート3で修正されていますか? – paulm
私はあまり確信していません、私はちょうどそれが関連するかもしれないと思った。 – user975989