コンパイラの警告 (レベル 3) C4334
'operator': 32 ビットシフトの結果が暗黙的に 64 ビットに変換されました (64 ビットシフトが意図されていましたか?
32 ビット シフトの結果は 64 ビットに変換され、コンパイラは 64 ビットシフトが意図されたと見なします。 64 ビット シフトを使用して、この警告を解決します。 32 ビットシフトが意図的な場合は、シフト結果を 32 ビットにキャストしてコンパイラに明確にします。
例
次の例では C4334 警告が生成されます。
// C4334.cpp
// compile with: /W3 /c
void SetBit(unsigned __int64 *p, int i) {
*p |= (1 << i); // C4334, 32-bit shift cast to 64-bit
*p |= (1i64 << i); // OK, 64-bit shift
*p |= static_cast<int>(1 << i); // OK, 32-bit shift saved to 64-bit result
*p |= static_cast<__int64>(1) << i; // OK, 64-bit shift
}