Il existe deux types Type1
et Type2
fournis par différents en-têtes, qui sont tous les deux typedefs pour certains types d'entiers, mais on ne sait pas lequel (et peut être différent entre les compilateurs, les systèmes d'exploitation , etc. de toute façon). Est-ce programme garanti pour fonctionner correctement (si elle compile)Vérification qu'une valeur d'un type entier correspond à une autre
Type1 a = ...;
if (a == (Type2) a) {
printf("a fits into Type2");
else {
printf("a doesn't fit into Type2");
}
ou y at-il des cas de coin, je ne prends pas en compte?
Oui, et utilisez une affirmation de compilation pour vérifier cela. – sharptooth
Non, pas la taille. Je veux savoir si la valeur peut être représentée correctement. Par exemple. '4294967295' s'intègre dans' unsigned int' ou 'long long' mais ne rentre pas dans' int' sur une plateforme 32 bits. –
Bien sûr, cela signifie également que cela ne peut pas être décidé au moment de la compilation car il dépend de la valeur réelle de 'a'. –