convertir de long long à int et l'inverse en c ++
Comment convertir de long long int et l'autre chemin du retour, en c++ ??
quelles sont les propriétés de long , surtout sa taille maximale,
merci à l'avance ..
source d'informationauteur Loers Antario
Vous devez vous connecter pour publier un commentaire.
Type long long est généralement 64 bits.
Type int est susceptible d'être en 32 bits, mais pas sur toutes les machines.
Si vous lancez un int à un long, vous pouvez le faire
et il sera très bien. Si vous partez dans l'autre direction, comme
et l'int est inférieur à 64 bits, il ne sera pas en mesure de tenir toutes les informations, de sorte que le résultat peut ne pas être correcte.
int
est assuré d'être au moins 16 bits de large. Sur les systèmes modernes, il est le plus couramment 32 bits (même sur les systèmes 64 bits).long long
qui n'existent pas à l'origine dans C++, est assuré d'être au moins 64 bits de large. C'est presque toujours exactement 64 bits de large.La manière habituelle pour convertir une valeur d'un type entier à l'autre est tout simplement de l'affecter. Aucune conversion nécessaire sera fait de façon implicite. Par exemple:
Pour une conversion restrictive, où le type de cible ne peut pas représenter toutes les valeurs de type de source, il y a un risque de débordement;
int
peut ou peut ne pas être en mesure de tenir la valeur9223372036854775807
. Dans ce cas, le résultat est de mise en œuvre définies par. La plupart comportement probable est que les bits de poids fort sont rejetés; par exemple, la conversion9223372036854775807
àint
pourrait donner2147483647
. (C'est plus clair en hexadécimal; les valeurs sont0x7fffffffffffffff
et0x7fffffff
respectivement.)Si vous avez besoin de convertir explicitement, vous pouvez utiliser un cast. Un style C cast utilise le nom de type entre parenthèses:
Ou vous pouvez utiliser un C++-style
static_cast
:qui est un peu plus sûr qu'un style C cast car il est limité dans les types, il peut fonctionner sur.
De la taille d'un int est à seulement 2 octets, alors que l'autre est généralement supérieure à celle de type int. Donc, si vous êtes à la recherche pour convertir long en int alors vous allez finir par perdre de l'information. Mais l'autre voie est possible, sans sacrifier l'exactitude de l'information.
Supposons que
a
est de type long etb
est de type int. Ensuite, int long covertion:a=(long)b;
. Pour d'autres façon:b=(int)a;
.