Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
'konvertering' konvertering från 'type1' till 'type2', eventuell dataförlust
Anmärkningar
En heltalstyp konverteras till en mindre heltalstyp.
- Det här är en nivå 4-varning om type1 är en signerad eller osignerad 
intoch type2 är mindre, till exempel en signerad eller osigneradshort. - Det är en nivå 3-varning om ett värde av typen 
__int64ellerunsigned __int64tilldelas till en signerad eller osigneradint. En eventuell dataförlust kan ha inträffat på grund av en begränsad konvertering, vilket kan leda till oväntade resultat. 
Om du vill åtgärda den här varningen ändrar du antingen programmet så att det använder kompatibla typer eller lägger till logik som säkerställer att intervallet med möjliga värden är kompatibelt med de typer du använder. Om konverteringen är avsedd använder du en explicit gjutning för att tysta varningen.
C4244 kan också visas när varningsnivån är 2. Mer information finns i Kompilatorvarning (nivå 2) C4244.
Examples
I följande exempel genereras C4244:
// C4244_level4.cpp
// compile with: /W4
void test(unsigned short num) {}
int main() {
   int int1 = 1;
   unsigned int uint1 = 2;
   short short1 = int1;   // C4244
   short short2 = (short)int1;   // warning silenced - explicit cast
   short short3 = uint1;   // C4244
   unsigned short ushort = uint1; // C4244
   test(uint1);   // C4244
}
Mer information finns i Vanliga aritmetiska konverteringar.
Mer information om hur du ställer in varningsnivån i Visual Studio finns i Ange kompilatoralternativ i Visual Studio-utvecklingsmiljön
// C4244_level3.cpp
// compile with: /W3
int main() {
   __int64 i64 = 1;
   unsigned __int64 u64 = 2;
   int int1 = i64;   // C4244
   int int3 = u64;   // C4244
}
Varning C4244 kan inträffa när du skapar kod för 64-bitarsmål som inte genererar varningen när du skapar för 32-bitarsmål. Pekarens aritmetiska resultat resulterar till exempel i en 32-bitars kvantitet på 32-bitarsplattformar, men en 64-bitars kvantitet på 64-bitarsplattformar.
I följande exempel genereras C4244 när det kompileras för 64-bitarsmål:
// C4244_level3_b.cpp
// compile with: /W3
int main() {
   char* p1 = 0;
   char* p2 = 0;
   int x = p2 - p1;   // C4244
}