共用方式為


編譯器警告 (層級 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
}