16.1 C
Москва
Суббота, 19 апреля, 2025

Разработчик 20 лет писал на Си и только сейчас узнал про макрос UINT32_MAX — Tproger

Разработчик с 20-летним стажем только недавно узнал о макросе UINT32_MAX — напоминание, что даже в Cи всегда есть чему удивляться

Инженер с 20-летним стажем в программировании на Си рассказал, как только недавно узнал о существовании макроса UINT32_MAX.

Казалось бы, элементарная вещь — но даже опытные разработчики могут упустить полезные возможности языка, особенно если «учились Си» ещё во времена K&R и переходили к ANSI-C уже на лету.

В своём блоге он вспоминает, как на старых компьютерах int был не 32-битным, как сегодня, а 16-битным. На Radio Shack CoCo int вмещал значения до 65535, а на Commodore Amiga, возможно, уже был 32-битным. Именно из-за таких несостыковок переносимость кода между платформами становилась настоящим испытанием.

От самодельных типов к стандарту

Чтобы справиться с неопределенностью, разные разработчики создавали собственные типы: u_int32, I16, U32 и так далее. Позже появились стандартизированные stdint.h и limits.h, которые ввели чёткие типы (uint32_t, int16_t) и константы вроде INT_MAX и UINT_MAX.

В какую сторону развивается Vue и есть ли ему современные альтернативыtproger.ru

Наш герой знал про эти макросы и успешно использовал их. Но, как выяснилось, он упустил одну вещь: stdint.h тоже содержит свои пределы — UINT32_MAX, INT64_MIN, INT8_MAX и десятки других. Эти макросы позволяют писать ещё более надёжный и переносимый код, особенно когда важно жёстко фиксировать размер чисел.

Читать также:
ООН представила собственные принципы open-source, а OSI их уже поддержала — Tproger

Код, который всегда работает

До недавнего времени программист вручную писал значения вроде 4294967295 для uint32_t — но теперь он просто использует UINT32_MAX. Это не только читаемо, но и работает на любой платформе, где uint32_t определён.

КОД

С signed-типами — аналогично: INT32_MAX, INT16_MIN и так далее. Стандарт Си делает всё это доступным уже давно — просто нужно об этом знать.

Урок: даже в Си есть чему удивляться

Автор оригинального материала признался: он просто не получил «меморандум» о появлении этих макросов в stdint.h. А ведь они могли сэкономить ему часы — если не годы — возни с ручным вводом чисел и багами на разных архитектурах.

OpenAI представила модели o3 и o4-mini с новым уровнем рассужденийtproger.ru

Мораль проста: даже если ты 20 лет пишешь на Си — всегда найдётся что-то новое. И хорошо, когда язык даёт инструменты, которые делают код чище и безопаснее.

Знакомы с UINT32_MAX?КонечноНет, я как тот самый разработчик

НОВОЕ НА САЙТЕ