Dans un récent travail à la maison, j'ai été obligé d'utiliser long
variable pour stocker un résultat, car il peut être un grand nombre.
J'ai décidé de vérifier il vraiment de l'importance pour moi, sur mon système (processeur intel core i5/64 bits windows 7/gnu gcc compiler) et a découvert que le code suivant:
printf("sizeof(char) => %d\n", sizeof(char));
printf("sizeof(short) => %d\n", sizeof(short));
printf("sizeof(short int) => %d\n", sizeof(short int));
printf("sizeof(int) => %d\n", sizeof(int));
printf("sizeof(long) => %d\n", sizeof(long));
printf("sizeof(long int) => %d\n", sizeof(long int));
printf("sizeof(long long) => %d\n", sizeof(long long));
printf("sizeof(long long int) => %d\n", sizeof(long long int));
produit la sortie suivante:
sizeof(char) => 1
sizeof(short) => 2
sizeof(short int) => 2
sizeof(int) => 4
sizeof(long) => 4
sizeof(long int) => 4
sizeof(long long) => 8
sizeof(long long int) => 8
En d'autres termes, sur mon système, int
et long
sont les mêmes, et tout sera trop grand pour int
tenir, ce sera trop grand pour long
pour tenir ainsi.
Le devoir à la maison elle-même n'est pas la question ici. Je me demande comment, dans un système où l' int < long
, dois-je attribuer une int
de temps?
Je suis conscient du fait qu' il sont nombreux étroitement liées à des questions sur ce sujet, mais j'ai l'impression que les réponses à l'intérieur de ces ne me fournissent pas de la compréhension complète de ce qui se passe dans le processus.
Fondamentalement, je suis à essayer de comprendre les éléments suivants:
- Dois-je cast
long
deint
avant la cession ou,depuisil sera considérés comme inoffensifs pour affecter directement?long
n'est pas un type de données différent, mais simplement une touche de modification, - Ce qui se passe sur les systèmes où l'
long > int
? Le résultat sera non défini (ou imprévisible) ou il sera la cause de la pièce de rechange de la variable omise? - Comment le casting de
long
deint
travaille dans le C? - Comment fonctionne l'attribution d'
long
deint
travaille en C lorsque je n'ai pas utilisez un casting?