Задать вопрос
@Azrail636

Почему длина long int 4 байта?

Добрый день, недавно начал изучать язык С, для этих целей нашёл в интернете книгу Майка Макграта "C программирование для начинающих", там был приведён следующий код:
#include <stdio.h>
#include <limits.h>

void main()
{
        printf("short int... \tsize: %d bytes \t", sizeof(short int));
        printf("от %d до %d \n", SHRT_MAX, SHRT_MIN);

        printf("long int... \tsize: %d bytes \t", sizeof(long int));
        printf("от %ld до %ld \n", LONG_MAX, LONG_MIN);
}

В консоли автора был показан такой вывод:
68540c779b6c9974146271.png
У меня получился другой вывод:
68540cfd2f659538828195.png
Интернет говорит что длина long int 8 байт, а длина int 4 байта. Но тогда почему у автора длина long int 4 байта?
  • Вопрос задан
  • 108 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Vamp
@Vamp
Размер этого типа данных не специфицирован. У автора на 32-битном процессоре он оказался 4 байта. У вас же 64-битный процессор, поэтому показывает 8 байт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Это особенность конкретного ABI (двоичного интерфейса).

16-битные машины: 1/2/2/4/ (char/short/int/long/long long)
Win32/64, Linux32: 1/2/4/4/8
Linux64: 1/2/4/8/8

И догадываюсь, почему так — это оказался лучший способ пофиксить некоторые старые API Си: таймеры (эпоха Unix, 0=1 янв 1970 00:00) и файлы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы