Будь то целые числа 32 или 64 бита (или что-то еще) зависит от вашего процессора, ОС и настроек компилятора, а также от точного типа данных, который вы используете.Я полагаю, что int
- это 32 бита на распространенных платформах, а long long
- 64. Чем отличается long
: в x86 Linux это 32 бита на 32-битной машине и 64 бита на 64-битной.Я думаю, что Windows делает что-то другое, хотя.Что касается размеров вычислений, вы можете определить, сколько байтов массив T
будет принимать к size * sizeof(T)
;вручную, вы можете умножить размер на количество бит в числе, разделенном на 8. Таким образом, память 16 КБ может хранить 4 КБ 32-разрядных или 2 КБ 64-разрядных, а массив элементов 3M займет 12 МБ для 32-битовые целые и 24 МБ для 64-битных.Вы можете выбрать размер данных независимо от вашего оборудования.Возможно, вы захотите взглянуть на <stdint.h>
в C99, чтобы получить целочисленные типы с определенными размерами битов.