Dela via


Kompilatorvarning (nivå 3) C4334

"operator": resultatet av 32-bitars skift konverteras implicit till 64 bitar (var 64-bitars skift avsett?)

Anmärkningar

Resultatet av 32-bitars skift konverterades till 64-bitars, och kompilatorn misstänker att ett 64-bitars skift var avsett. Lös den här varningen med hjälp av ett 64-bitars skift. Om ett 32-bitars skift är avsiktligt kastar du skiftresultatet till 32-bitars för att göra det klart för kompilatorn.

Example

I följande exempel genereras 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
}