ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
645429 Топик полностью
Bill (13.01.2016 15:03, просмотров: 110) ответил Petrovich на Кто хорошо понимает программирование? Раньше писал для 8разрядников long-константы с помощью суффикса L. В последнее время, поддавшись тренду, стал перед константой писать префикс (int32_t), думая, что такие записи равнозначны и я стал типа
Разумеется неравнозначно. По умолчанию константы имеют тип int, т.е число со знаком. Разрядность данного типа зависит от компилятора. Число 2147483648 выходит за рамки диапазона 2147483647 ... -2147483648. Поэтому в первой записи компилятор не может преобразовать неправильную константу перед ее присвоением переменной. Вообще данная запись бессмысленна. Во второй записи компилятору явно указывается тип константы. Он это возможно пропустит, но это будет некорректно, так как в результате будет отрицательное число. Поэтому нужно либо использовать тип long long (если требуются данные со знаком), либо unsigned long (если знак не нужен). В последнем случае для задания констант используется суффикс UL. По-моему, так. Или нет?