1
votes

Entiers signés et non signés avec des opérateurs logiques

x >= 0 || x < ux

1 commentaires

Détail: x n'est pas cast - il n'y a pas de cast dans x . x est converti en un non signé .


3 Réponses :


0
votes

Non, 0 est un int , il n'y a donc aucune promotion dans la partie x> = 0 de votre expression.


0 commentaires

4
votes

Non. Cela se produit opérateur par opérateur.

(x >= 0) || (x < ux)

est naturellement

x >= 0 || x < ux

Depuis x et 0 code> sont tous deux des int s, il n'y a pas besoin de (arithmétique habituelle) conversions ...

Et même si x est converti en non signé dans x , la valeur de l'expression x est de type int - soit 0 code > ou 1 (comme sur le côté gauche).


0 commentaires

1
votes

Non, ce n'est pas le cas.

En effet, x> = 0 est une expression. (Formellement 0 est une constante octale de type int.)

Essayez 1/2 * 1.0 pour un exemple plus pernicieux. Ceci est groupé comme (1/2) * 1.0 et vaut zéro car les entiers dans l'expression 1/2 ne sont pas promus en virgule flottante.


1 commentaires

Merci, ça a du sens