Prediga la salida del siguiente programa. Suponga que los números se almacenan en forma de complemento a 2.
#include<stdio.h> int main() { unsigned int x = -1; int y = ~0; if (x == y) printf("same"); else printf("not same"); return 0; }
(A) igual
(B) diferente
Respuesta: (A)
Explicación: -1 y ~0 esencialmente tienen el mismo patrón de bits, por lo tanto, x e y deben ser iguales. En la comparación, y se promociona a sin firmar y se compara con x (consulte aquí las reglas de promoción). El resultado es «igual». Sin embargo, cuando se interpretan como firmados y sin firmar, sus valores numéricos diferirán. x es MAXUNIT y y es -1. Como también tenemos %u para y, la salida será MAXUNIT y MAXUNIT.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA