Что такое переносимое значение для UINT_MIN?

В limit.h есть #defines для INT_MAX и INT_MIN (а также SHRT_ * и LONG_ * и т. д.), но только UINT_MAX .

Должен ли я сам определить UINT_MIN ? Является ли 0 (положительный ноль) переносимым значением?

10
задан Ariel Bold 17 August 2010 в 04:24
поделиться

3 ответа

Если вы хотите быть «безопасным с точки зрения типов», вы можете использовать 0U , поэтому, если вы используете его в выражении, у вас будет правильное повышение до unsigned ].

2
ответ дан 3 December 2019 в 15:34
поделиться

Это целое число без знака - по определению его наименьшее возможное значение равно 0. Если вам нужно какое-то обоснование, помимо здравого смысла, стандарт говорит:

6.2.6.2 Целочисленные типы

  1. Для беззнаковых Для целочисленных типов, отличных от unsigned char , биты представления объекта должны быть разделены на две группы: биты значения и биты заполнения (последние могут не быть). Если имеется N битов значений, каждый бит должен представлять различную степень 2 между 1 и 2 ^ ( N -1), так что объекты этого типа должны быть способны представлять значения от 0 до 2 ^ ( N -1) с использованием чистого двоичного представления; это должно быть известно как представление значения. Значения любых битов заполнения не указаны.
19
ответ дан 3 December 2019 в 15:34
поделиться

Вы можете использовать std :: numeric_limits :: min () .

7
ответ дан 3 December 2019 в 15:34
поделиться