Bonjour,
je souhaite simplement declarer des nombres positifs ou negatifs plus grand qu'avec int qui n'est que sur 4 octets!
merci pour votre reponse
Version imprimable
Bonjour,
je souhaite simplement declarer des nombres positifs ou negatifs plus grand qu'avec int qui n'est que sur 4 octets!
merci pour votre reponse
Salut,
Il existe le type longCode:long maVariable ;
je suis d'accord mais pourquoi lorsque l'on fait :Citation:
Envoyé par Elijha
Code:sizeof(int)
on obtient la meme chose : 4. :aie:Code:sizeof(long)
Autant pour moi,Citation:
Envoyé par olivier1209
donneCode:
1
2
3
4 printf("sizeof(char) = %d\n", sizeof(char)) ; printf("sizeof(int) = %d\n", sizeof(int)) ; printf("sizeof(long) = %d\n", sizeof(long)) ; printf("sizeof(long long) = %d\n", sizeof(long long)) ;
Donc il existe le type long longCitation:
sizeof(char) = 1
sizeof(int) = 4
sizeof(long) = 4
sizeof(long long) = 8
Code:long long maVariable ;
Parce que, selon la norme du langage C, on doit avoir la relation suivante:
Un entier de type short doit au minimum être codé sur 16 bits et un entier de type long doit au minimum être codé sur 32 bits.Code:sizeof short <= sizeof int <= sizeof long
C'est tout ce que dit la norme. Rien n'empêche, et c'est ce qui se passe avec ma machine, d'avoir les types int et long int codés sur 32 bits. Depuis C99, il existe le type long long int.
Thierry
donc si je comprends bien pour declarer des nombres de plus de 32 bits c "long long int" c sa? (ce type passe sur tt les compilateurs?)
Sur certaines implantations, long est codé sur 64 bits, mais la norme assure qu'il l'est au moins sur 32 bits. Tous les compilateurs qui implantent la norme C99 supporte le type long long. La plupart des compilateurs C modernes le supporte même si le support complet de C99 est encore très loin d'être universellement répendu (je ne crois pas qu'on trouve aujourd'hui un compilateur qui implante cette norme à 100 %).Citation:
Envoyé par menzeli
Thierry
Le plus grand type signé en C90 est int avec le modificateur long :Citation:
Envoyé par menzeli
il peut aussi s'écrire :Code:long int x;
Si c'est insuffisant, il faut passer en C99 qui offre le modificateur long long :Code:long x;
il peut aussi s'écrire :Code:long long int x;
La plage de valeur est LLONG_MIN à LLONG_MAX inclus.(<limits.h>)Code:long long x;
ok merci pour les indications.Y a t'il une fourchette dans laquel on peut utiliser ce type?
Bref pour faire simple j'ai:
int k= 34;
int(?) j;
j=expo(2,k);
je veux afficher j et le declarer si c'est pas ce type
Citation:
Envoyé par menzeli
Citation:
Envoyé par Emmanuel Delahaye
Ok merci autant pour moi j'avais pas compris!
Donc si je me trompe pas, je peux faire la chose suivante:
J'ai un nombre qui vaut j=2^34,je fais:
long long int j=2^34;
C'est bien sa?
Il n'existe pas de symbole "puissance" en C ni en C++.
Par contre, pour "2 puissance X", on utilise souvent 1<<X (1 décalé à gauche de X bits).
Bonjour,
Ça pourrait, mais il faudra trouver un compilateur qui comprenne 2^34Citation:
Envoyé par menzeli
En C ou C++, on fera
Dautre part, rien ne garantit que ton compilateur traitera le type long long sur 64 bits, il faudra prendre la peine de vérifier.Code:long long int j=(1 << 34) ;
Merci beaucoup pour vos reponses!
C'est le minimum garanti en unsigned. Ca peut être plus, mais c'est pas grave.Citation:
Envoyé par thewho
Pour être portable :
Code:unsigned long long int j = (1ull << 34) ;