コンパイラの警告 (レベル 3) C4334

'operator' : 32 ビット シフトの結果が暗黙的に 64 ビットに変換されました (64 ビット シフトに意図的に変換しようとしましたか?)

32 ビット シフトの結果が暗黙的に 64 ビットに変換され、コンパイラは 64 ビット シフトが意図されたと推測します。 この警告を解決するには、64 ビット シフトを使用するか、シフト結果を 64 ビットに明示的にキャストします。

次の例では C4334 警告が生成されます。

// C4334.cpp
// compile with: /W3 /c
void SetBit(unsigned __int64 *p, int i) {
   *p |= (1 << i);   // C4334
   *p |= (1i64 << i);   // OK
}