27 votes

(Bool) (i & 1) et i% 2 == 1 sont-ils identiques?

(bool)(i & 1) et i % 2 == 1 toujours les mêmes où i est int ?

Remarque: dire toujours que je veux dire pour toutes les plates-formes (même lorsqu'un octet est de 16 bits) et pour toutes les normes de C et C ++.

Éditer:

Pour toutes les normes de C et C ++ où bool existent.

49voto

Steve Jessop Points 166970

Non.

La représentation du complément à 1 de int , la représentation de -1 est 1 ... 10 , ils diffèrent donc.

Quoi qu'il en soit, i % 2 peut être négatif pour i négatif (en effet, il doit être en C99 quand il n'est pas 0), et donc pas égal à 1 pour les nombres impairs négatifs.

9voto

hrnt Points 5835

Non.

Par exemple, essayez-le si i vaut -1. -1 % 2 == -1 et (bool) (-1 & 1) est égal à 1.

(En supposant 2-complément)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X