2015-02-28 5 views
1

Надеюсь, это не сбивает с толку, но я имею в виду, почему мы говорим, например, что размер long int в C - это замена машины.Что означает, что переменный размер зависит от реализации языкового аппарата?

Означает ли это, что размер отличается от ARM-процессора, процессора x86 или PPC или ...?

+5

Да, это именно то, что это значит. –

+6

Это означает, что размер * может * быть различным для разных платформ. – juanchopanza

+1

спасибо @OliverCharlesworth – TheX

ответ

0

"означает размер различен для процессора ARM, x86 процессор, или КПП ..."

Короче: Да.

+1

Хорошо спасибо, это только короткое время ??? – TheX

+1

@TheX Ну, подумайте о программах Win32, которые все еще могут работать на платформах Win64. Так что это mereley не только архитектура процессора, но и разница. –

+2

@TheX :-) "* short *", скорее всего, ссылается на размер ответа! – alk

3

Это означает, что компилятор может выбрать любой размер, который, по его мнению, является подходящим, в пределах заданных границ. (Тип long int определяется как имеющий, по меньшей мере, диапазон, соответствующий 32-разрядному номеру.)

Обычно это означает, что разные размеры используются для разных платформ в зависимости от машинного слова процессора. Различные компиляторы могут даже использовать разные размеры для одной и той же платформы, и теоретически один и тот же компилятор может использовать разные размеры для одной и той же платформы в разных ситуациях.

+0

long int не определено как не менее 32 бит. В стандарте указывается только минимальный диапазон значений, который должен представлять длинный int. Да, это работает как минимум на 32 бита на двоичной машине, но стандарт не требует двоичной машины. Там были не-бинарные (например, тройные) вычислительные машины реального мира, и они могут быть снова и снова - и ничто не останавливает конструкцию реализации на таких машинах. – Rob

+0

@ Rob: Хорошо, я скорректировал ответ. – Guffa

Смежные вопросы