Выбор ответа Middle Типы и неопределённое поведение обновлено
Размер long на Windows и Linux
Вопрос
Чему обычно равен sizeof(long) на 64-битной Windows (MSVC) и на 64-битном Linux (GCC)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 4 и 8 байт. Windows использует модель LLP64 (long 32 бита, long long и указатели 64), Linux и macOS LP64 (long и указатели 64).
Варианты ответа
- 8 и 8 байт
- 4 и 4 байта
- 8 и 4 байта
- 4 и 8 байтправильный ответ
Разбор
Windows использует модель LLP64 (long 32 бита, long long и указатели 64), Linux и macOS LP64 (long и указатели 64). Поэтому long непереносим, а для фиксированной ширины берут std::int64_t.
Остальные варианты не соответствуют ни одной из распространённых моделей данных для этих платформ.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Типы и неопределённое поведение»
- Порядок байтов: перевернуть uint32 и посчитать единицы
- Умножение int64 с проверкой переполнения
- Середина двух int64 без переполнения
- std::bit_cast
- Что C++20 изменил для знаковых целых
- Порядок вычисления аргументов функции
- Объясни, что такое неопределённое поведение
- Почему проверка x + 1 < x исчезла