Problem z wyświetleniem w konsoli

0

Witam
Walczę z problemem prawidłowego wyświetlenia wartości 0 i sizeof(unsigned long).

    printf("char max: \t\t%d\t\t\tmin: %d\t\tbajtów: %d\n", CHAR_MAX, CHAR_MIN, sizeof(char));
    printf("short max: \t\t%d\t\t\tmin: %d\t\tbajtów: %d\n", SHRT_MAX, SHRT_MIN, sizeof(short));
    printf("int max: \t\t%d\t\tmin: %d\tbajtów: %d\n", INT_MAX, INT_MIN, sizeof(int));
    printf("long max: \t\t%d\t\tmin: %d\tbajtów: %d\n", LONG_MAX, LONG_MIN, sizeof(long));


    printf("unsigned char max: \t%d\t\t\tmin: %d\t\t\tbajtów: %d\n", UCHAR_MAX, 0, sizeof(unsigned char));
    printf("unsigned short max: \t%d\t\t\tmin: %d\t\t\tbajtów: %d\n", USHRT_MAX, 0, sizeof(unsigned short));
    printf("ŹLE   unsigned int max: \t%lld\t\tmin: %d\t\t\tbajtów: %d\n", UINT_MAX, 0, sizeof(unsigned int));
    printf("ŹLE   unsigned long max: \t%lld\t\tmin: %d\t\t\tbajtów: %d\n", ULONG_MAX, 0, sizeof(unsigned long));

Problem jest z 2 ostatnimi linijkami, jeśli jest tak jak w kodzie to dobrze wyświetla wartości max ale min i ilość bajtów są błędne, jeśli %lld zamienię na %d to dobrze wyświetla min i sizeof ale błędnie max.
Co może być tego przyczyną ?

0

Eee, ale błędnie to znaczy jak?

0

http://ideone.com/XqJfO1
no chyba o to chodzi, przynajmniej odnosnie 2och ostatnich linijek
po prostu musisz uwazac, gdzie masz long long oraz gdzie zmienne typow unsigned

1

kompilator (jeśli jest używany przełącznik -Wall) o wszystkim ostrzega:
https://wandbox.org/permlink/D7UAmwu6IRrYoWCU

0

Dzięki Panowie za pomoc, już wiem jak powinno być :)
printf("char max: \t\t%d\t\t\tmin: %d\t\tbajtów: %d\n", CHAR_MAX, CHAR_MIN, sizeof(char));
printf("short max: \t\t%d\t\t\tmin: %d\t\tbajtów: %d\n", SHRT_MAX, SHRT_MIN, sizeof(short));
printf("int max: \t\t%d\t\tmin: %d\tbajtów: %d\n", INT_MAX, INT_MIN, sizeof(int));
printf("long max: \t\t%ld\t\tmin: %ld\tbajtów: %d\n", LONG_MAX, LONG_MIN, sizeof(long));

printf("unsigned char max: \t%u\t\t\tmin: %d\t\t\tbajtów: %d\n", UCHAR_MAX, 0, sizeof(unsigned char));
printf("unsigned short max: \t%u\t\t\tmin: %d\t\t\tbajtów: %d\n", USHRT_MAX, 0, sizeof(unsigned short));
printf("unsigned int max: \t%u\t\tmin: %d\t\t\tbajtów: %d\n", UINT_MAX, 0, sizeof(unsigned int));
printf("unsigned long max: \t%lu\t\tmin: %d\t\t\tbajtów: %d\n", ULONG_MAX, 0, sizeof(unsigned long));

Jak to w każdej książce piszą 'POPRAWIAJ WARNINGI !!!" :)

0

Clang daje bardziej czytelną informację o problemach:
https://wandbox.org/permlink/8gXkHkyGhmeSC0sG

1 użytkowników online, w tym zalogowanych: 0, gości: 1