En fait, je crois que tu as oublié, dans ton raisonnement, que la norme prévoit que la taille des types primitifs respecte l'inégalité
sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
dans le cas où ambigüité il a, cette règle peut permettre de la lever dans le cadre de la "politique du moindre effort" généralement suivie par le compilateur:
Il aura en effet "moins de mal" à promouvoir un int en long qu'à promouvoir un int en long long parce qu'il pourra se permettre un décalage des bits (a priori) moins important, tout comme il aura (a priori toujours) moins de bits à mettre à la valeur correcte
Partager