Как «деталь реализации», это именно та вещь, которая не входит в формальную спецификацию языка C;учитывая, что компилятор теоретически должен скрывать это от вас, все, что вы могли бы сделать, чтобы выяснить эту информацию, технически зависит от «неопределенного нестандартного поведения».
Это педантичный ответ.Практический ответ: вы можете использовать sizeof(int)
для определения ширины регистра в вашей конкретной архитектуре с помощью любого разумного компилятора.
Обратите внимание, что это определяется во время компиляции, а не во время выполнения, поэтому он сообщает вам, является ли ваше приложениебыл скомпилирован в 32-разрядном или 64-разрядном (или любом другом) режиме, а не , например , запущенном на 64-разрядном компьютере, эмулирующем 32-разрядный x86.Для такого рода информации вам нужно взглянуть на вещи, полностью зависящие от платформы, такие как CPUID
.