C : Impression grand nombre

Prendre le suivant :

#include <stdio.h>

main() {
    unsigned long long verybig = 285212672;

    printf("Without variable : %llu\n", 285212672);
    printf("With variable    : %llu", verybig);
}

C'est la sortie du programme ci-dessus :

Without variable : 18035667472744448
With variable    : 285212672

Comme vous pouvez le voir ci-dessus, lorsque printf est passé le nombre comme une constante, il imprime un grand nombre incorrect, mais lorsque la valeur est d'abord stocké dans une variable, printf imprime le nombre correct.

Quel est le raisonnement derrière cela?

OriginalL'auteur Andreas Grech | 2009-09-06