C часто используется для написания низкоуровневого кода, специфичного для архитектуры ЦП, на которой он работает.Предполагается, что размер типа int или типа указателя сопоставляется с нативными типами, поддерживаемыми процессором.На 32-битном процессоре 32-битные целочисленные значения имеют смысл, но они не подходят для меньших процессоров, которые были распространены в начале 1970-х годов, или на микрокомпьютерах, которые последовали десятилетие спустя.В настоящее время, если ваш процессор имеет встроенную поддержку 64-битных целочисленных типов, почему вы хотите ограничиться 32-битными целыми числами?
Конечно, это делает написание действительно переносимых программ более сложным, поскольку выпредложил.Лучший способ убедиться, что вы не встраиваете случайные зависимости от типов конкретной архитектуры в свои программы, - это раннее портирование их на различные архитектуры, а также частое создание и тестирование на всех этих архитектурах.Со временем вы познакомитесь с проблемами переносимости и будете стремиться писать свой код более тщательно.Осознание того, что не все процессоры имеют целочисленные типы такой же ширины, как их типы указателей, или что не все компьютеры используют арифметику с двойным дополнением для целых чисел со знаком, поможет вам распознать эти предположения в своем собственном коде.