A quoi sert (un)signed short int en C++ ?

Fermé
-RoRo- Messages postés 98 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 14 mai 2010 - 24 déc. 2008 à 13:09
-RoRo- Messages postés 98 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 14 mai 2010 - 24 déc. 2008 à 14:26
Bonjour, je voulais savoir à quoi consiste d'utiliser unsigned short int ( entier court non signé) et signed short int (entier court signé) ?
Par exemple

Qu'elle est la différence entre ces programmes ci-dessous ?

#include <iostream>
int main()
{
unsigned short int Largeur;
Largeur = 5;
signed short int x;
x = -5;
std::cout << "Largeur : " << Largeur;
std::cout << "x :" << Longueur;
system ("pause");
return 0;
}

ET :::


#include <iostream>
int main()
{
int Largeur;
int x;
Largeur = 5;
x = -5;
std::cout << "Largeur : " << Largeur;
std::cout << "x :" << Longueur;
system ("pause");
return 0;
}

2 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
24 déc. 2008 à 13:17
Bonjour,
Ce ne sont que des recherches de performances optimales (enfin, bien souvent, parfois en utilisant le mauvais type on fait planter tout le programme).

Par exemple, un int est codé sur 32bits, donc il y a 4294967296 valeurs possibles.
Par défaut, quand tu déclares un int, c'est un signed int, c'est-à-dire que ton int peut aller de -2147483647 à +2147483648.
Si dans ton programme tu sais que tu n'utiliseras pas d'entiers négatifs, alors ça ne sert à rien de gaspiller 16bits. Tu déclares ton int en unsigned int, de cette manière ton entier peut aller de 0 à 4294967295.

Pour les shorts, c'est un peu la même façon de penser : un short est codé sur 16bits.
Donc par défaut, ton short peut aller de -32767 à +32768. Si tu sais que ton entier ne va pas dépasser ces valeurs, alors autant gagner quelques bits en évitant d'allouer de la mémoire qui ne sera pas utilisée.

Cordialement,
9
-RoRo- Messages postés 98 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 14 mai 2010 1
24 déc. 2008 à 14:26
Ben voilà, j'ai tout compris. Merci à toi !
0