建議使用 Visual Studio 2017

編譯器警告 (層級 3) C4334

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

'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  
}  

顯示: