Рубрики

Викторина С — 112 | Вопрос 3

Выберите лучшее утверждение для программы ниже:

#include "stdio.h"

  

int main()

{

 struct {int a[2], b;} arr[] = {[0].a = {1}, [1].a = {2}, [0].b = 1, [1].b = 2};

  

 printf("%d %d %d and",arr[0].a[0],arr[0].a[1],arr[0].b);

 printf("%d %d %d\n",arr[1].a[0],arr[1].a[1],arr[1].b);

  

 return 0;

}

(A) Ошибка компиляции, потому что тип структуры (содержащий два поля, то есть массив int и int) был указан вместе с определением массива arr [] этого типа структуры.
(B) Ошибка компиляции из-за неправильного синтаксиса для инициализации массива arr [].
(C) Нет ошибки компиляции, и два элемента arr [] будут определены и инициализированы. Выход будет «1 0 1 и 2 0 2».
(D) Нет ошибки компиляции, и два элемента arr [] будут определены и инициализированы. Вывод будет «1 X 1 и 2 X 2», где X — это случайное число мусора.

Ответ: (с)
Пояснение: В C могут использоваться указатели для явной инициализации. Для массива элементы, которые не инициализированы явно в программе, устанавливаются как НОЛЬ. Вот почему правильный ответ — C.
Тест на этот вопрос

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

Викторина С — 112 | Вопрос 3

0.00 (0%) 0 votes