Как узнать, что является максимальным назначаемым значением для переменной из типа unsigned long int?Максимальное значение «unsigned long int» в C++
4
A
ответ
18
Очевидный способ был бы использовать std::numeric_limits<unsigned long>::max();
7
Другим способом, чтобы выяснить, были бы:
unsigned long int i = (unsigned long int) -1;
printf("%lu\n", i);
2
В простом способе:
unsigned long int i = -1;
std::cout << i;
не работает на комплемент машине 1 в (где -0 будет максимальным) – TemplateRex
@TemplateRex - '(unsigned long) -1' всегда является наибольшим значением, которое может быть представлено в' unsigned long'. Независимо от базового оборудования беззнаковая арифметика «должна подчиняться законам арифметики по модулю 2n, где n - количество бит в представлении значений этого конкретного размера целого числа». [Basic.fundamental]/4. –
@PeteBecker, но, например, '(char) -1' в дополнении 1 будет 254, а' (char) -0' будет 255. Проблема не в арифметике по модулю, а в сопоставлении с подписью без знака. Что мне здесь не хватает? – TemplateRex