Freigeben über


Compilerwarnung (Ebene 3) C4334

"operator": Ergebnis der implizit in 64 Bit konvertierten 32-Bit-Schicht (war 64-Bit-Schicht vorgesehen?)

Das Ergebnis der 32-Bit-Schicht wurde in 64-Bit konvertiert, und der Compiler vermutet, dass eine 64-Bit-Schicht beabsichtigt war. Beheben Sie diese Warnung mithilfe einer 64-Bit-Schicht. Wenn eine 32-Bit-Schicht beabsichtigt ist, wandeln Sie das Schichtergebnis auf 32-Bit um, damit sie dem Compiler klar wird.

Beispiel

Im folgenden Beispiel wird C4334 generiert.

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