Рубрики

C | Структура и Союз | Вопрос 7

union test

{

    int x;

    char arr[8];

    int y;

};

  

int main()

{

    printf("%d", sizeof(union test));

    return 0;

}

Предсказать вывод вышеуказанной программы. Предположим, что размер целого числа составляет 4 байта, а размер символа равен 1 байту. Также предположим, что выравнивание не требуется.
(А) 12
(Б) 16
(С) 8
(D) Ошибка компилятора

Ответ: (с)
Объяснение: Когда мы объявляем объединение, память, выделенная для переменной объединения этого типа, равна памяти, необходимой для самого большого ее члена, и все члены разделяют это же пространство памяти. В приведенном выше примере «char arr [8]» является самым большим членом. Поэтому размер объединенного теста составляет 8 байт.
Тест на этот вопрос

Рекомендуемые посты:

C | Структура и Союз | Вопрос 7

0.00 (0%) 0 votes