Je voudrais connaître les règles spécifiées par la norme de langage C++ pour des situations telles que:Que dit la norme de langage C++ sur la façon dont static_cast gère la réduction de la taille d'un entier?
long x = 200;
short y = static_cast<short>(x);
est-y
200 garantie d 'être, ou ne la norme laisser cela à la mise en œuvre de décider? Dans quelle mesure les différents compilateurs adhèrent-ils à la norme?
Comportement non défini, non spécifié. – GManNickG
@GMan: non spécifié, mais défini par l'implémentation. Il existe une différence subtile: pour la mise en œuvre définie, il existe un comportement spécifique que l'implémentation doit documenter, ce qui n'est pas nécessaire pour un comportement non spécifié. La différence entre un comportement «non spécifié» et un comportement «non défini» est qu'il existe généralement un ensemble de comportements autorisés pour non spécifié, alors que pour tout ce qui ne l'est pas, tout se passe (y compris l'écrasement). –
@Michael: Bon à savoir, merci. – GManNickG