Aracılığıyla paylaş


Derleyici Uyarısı (düzey 3) C4334

'operator': 32 bit kaydırmanın sonucu örtük olarak 64 bite dönüştürüldü (64 bit kaydırma amaçlandı mı?)

32 bit kaydırmanın sonucu 64 bit'e dönüştürüldü ve derleyici 64 bit kaydırmanın amaçlandığını şüpheleniyor. 64 bit vardiya kullanarak bu uyarıyı çözün. 32 bit kaydırma kasıtlı olarak yapılırsa, derleyiciye açık hale getirmek için shift sonucunu 32 bit'e yayın.

Örnek

Aşağıdaki örnek C4334 oluşturur.

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