Megosztás a következőn keresztül:


Fordító figyelmeztetése (3. szint) C4334

"operátor": a 32 bites eltolás eredménye implicit módon 64 bitre konvertálódott (64 bites eltolás volt a cél?)

Megjegyzések

A 32 bites eltolás eredménye 64 bitesre lett konvertálva, és a fordító azt gyanítja, hogy 64 bites eltolást szántak. Ezt a figyelmeztetést 64 bites eltolással oldhatja meg. Ha az eltolás eredménye 32 bites, és ez szándékos, akkor azt 32 bitesre kell továbbítani, hogy egyértelmű legyen a fordító számára.

Example

Az alábbi példa C4334-et hoz létre.

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