deuxbagettes a écrit :
qu'arrive-t-il à un entier (non signé) qui est à sa valeur maximum (OxFFFFFFFF pas exemple pour un entier de 4 octet) et qu'on l'incrémente à nouveau ?
|
Devient 0. Les non signes modelisent Z/nZ.
INT_MAX
Citation :
est définie comme etant le plus grand entier disponible.
|
Entier dans le sens int. Il y a aussi LONG_MAX (long) SHRT_MAX, USHRT_MAX, UINT_MAX ULONG_MAX.
Citation :
Par definition , MAX_INT+1 renvoit 0 sur les machines classiques à representation en complément à 2.
|
Non. -INT_MAX-1 soit INT_MIN.
Ensuite c'est un depassement de capacite et de plus en plus les compilateurs supposent que ca n'arrive pas (par exemple si gcc a bien une option pour permettre de dependre de ce comportement, mais elle n'est pas active par defaut), donc dependre de la valeur optenue est peu sage.
Citation :
Classiquement, sur ces memes machines
unsigned x = ~0;
renvoit le bon pattern de bit.
|
Pas besoin de dependre de quoi que ce soit:
Code :
- unsigned x = -1U;
- unsigned y = ~0U;
|
sont garntis etre UINT_MAX.
---------------
The truth is rarely pure and never simple (Oscar Wilde)