Je sais que dans C
, le type de retour de l'opérateur sizeof
est size_t
étant un type entier non signé défini dans <stdint.h>
. Ce qui signifie que sa taille maximale doit être 65535
comme indiqué dans C99
standard 7.18. :
limit of size_t
SIZE_MAX 65535
Cependant dans gcc-4.8.2
En tête de fichier stdint.h
a défini sa taille bien plus que 65535
contredisant ce qui est indiqué dans C99
standard comme indiqué ci-dessous,
/* Limit of `size_t' type. */
# if __WORDSIZE == 64
# define SIZE_MAX (18446744073709551615UL)
# else
# define SIZE_MAX (4294967295U)
# endif
Veuillez m'aider à comprendre pourquoi il y a une différence ou une raison derrière ma mauvaise interprétation.
La norme dit que SIZE_MAX
doit être au moins 65535.
Il ne spécifie aucune limite supérieure et l'implémentation de gcc est parfaitement valide.
Citant la référence que vous avez citée (non souligné dans l'original):
Sa valeur définie par l'implémentation doit être égale ou supérieure en magnitude (valeur absolue) à la valeur correspondante indiquée ci-dessous, avec le même signe.