tome las siguientes:C: Impresión de grandes números de
#include <stdio.h>
main() {
unsigned long long verybig = 285212672;
printf("Without variable : %llu\n", 285212672);
printf("With variable : %llu", verybig);
}
Ésta es la salida del programa anterior:
Without variable : 18035667472744448
With variable : 285212672
Como se puede ver de lo anterior, cuando printf
se pasa el número como constante, imprime un gran número incorrecto, pero cuando el valor se almacena primero en una variable, printf
imprime el número correcto.
¿Cuál es el razonamiento detrás de esto?
pero creo compilador es suficientemente inteligente como para averiguar% u en printf format spec, try printf ("% d% u", ~ 0, ~ 0) .. ambos imprimirán los valores como se espera. – sud03r
No - esos tipos de datos son del mismo tamaño - es printf() descifrando eso - intente % d con 'a'. – paxdiablo
Pax: Eso está bien también, los literales de caracteres son constantes enteras. – caf