Je pense qu'on ne peut calculer soi-même de manière fiable que les limites des types non signés. Le type char est spécialement problématique.
Pour tous les types entiers, l'entête <limits.h> contient des macros comme CHAR_MIN, CHAR_MAX, INT_MAX. Pour les types flottants, voir <float.h> (avec DBL_MAX, DBL_EPSILON, DBL_MIN, etc.)
- Edité par Marc Mongenet 20 septembre 2018 à 10:09:02
Le type char contient CHAR_BIT bits, qui est supérieur ou égal à 8. Le type signed char est signé, unsigned char est non signé, et char est signé ou pas, ça dépend. Bref, on peut tester sur son PC à la maison et discuter avec un ami, puis penser que ce qu'on a trouvé est universel; mais en fait c'est plus compliqué.
- Edité par Marc Mongenet 20 septembre 2018 à 10:12:40
En effet, la norme dit que le char fait au moins 8 bits, donc pourrait avoir davantage.
Mais je me demande.
As tu des exemples de compilos ou le char fait effectivement plus de 8 bits, et n'est pas signed par défaut ?
Concernant le signe, j'ai trouvé cette intéressante table à https://trofi.github.io/posts/203-signed-char-or-unsigned-char.html:
architecture signedness preferred signedness match
alpha SIGNED UNSIGNED NO
arm UNSIGNED AMBIVALENT YES
hppa SIGNED UNSIGNED NO
ia64 SIGNED UNSIGNED NO
m68k SIGNED AMBIVALENT YES
mips SIGNED AMBIVALENT YES
powerpc UNSIGNED UNSIGNED YES
s390(64) UNSIGNED UNSIGNED YES
sh SIGNED SIGNED YES
sparc SIGNED AMBIVALENT YES
x86 SIGNED AMBIVALENT YES
Avec ARM d'un coté et x86 de l'autre, le monde est bien partagé. Personnellement, j'ai toujours codé sur des machines avec char signé cela dit.
Pour ce qui est d'avoir un char de plus de 8 bits, on trouve des exemples sur le Web, mais je n'ai aucune expérience avec.
Quant à être plus de 8 bits et non signé, je ne sais pas si ça existe.
Valeurs min et max des float et des double
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html