2012-03-17 4 views
0

При решении упражнений из книги K & R C я наткнулся на упражнение 2.1.UINT_MAX так же, как ULONG_MAX в C

Сначала я получил в качестве UINT_MAX как -1, но тогда я использовал %u заполнитель, но теперь его дает мне такое же количество, как ULONG_MAX.

В книге в приложении Б, они говорят, что UINT_MAX должны быть 65535 и ULONG_MAX должны быть 4294967295, но при выполнении упражнения, его давая мне как для UINT_MAX и ULONG_MAX как 4294967295.

Почему?

+1

В 64-разрядных приложениях Mac OS X 'ULONG_MAX' =' ULONGLONG_MAX' и 'ULONG_MAX''' UINT_MAX'. В частности, 'UINT_MAX = 4294967295',' ULONG_MAX = 18446744073709551615' и 'ULONG_LONG_MAX = 18446744073709551615' – bobobobo

ответ

5

Прежде всего, правильный путь для печати unsigned long не является %u, но %lu. Во-вторых, в стандарте указано минимальное значение значение UINT_MAX составляет 65535. Оно может быть (и обычно) больше.

5.2.4.2.1 Размеры целочисленных типов

Их реализация-де определены значения должны быть равна или больше в величины (абсолютное значение) к показанным, с тем же знаком.

+0

Ох, я вижу Я не видел минимальную величину Спасибо: D –

1

На 32-битных платформах, int и long, как правило, та же, и поэтому их макс также одинаковы. То же самое для их неподписанных коллег, конечно.

0

Приложение неправильное. Единственная гарантия заключается в том, что sizeof (long)> = sizeof (int)> = sizeof (char) отмечает возможность равенства.

 Смежные вопросы

  • Нет связанных вопросов^_^