C C  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Структуры, объединения и перечисления

Тест проверяет агрегатные типы как часть объектной модели: копирование структур, активный член union, enum как состояние или маска, байты заполнения и причины, по которым сырой struct нельзя считать готовым сетевым форматом.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. Код читайте построчно: часть заданий проверяет вывод, часть — поиск дефекта, переносимость и безопасное исправление. После завершения откроются объяснения и профиль по 4 темам.
Вопрос 1 из 20
Что происходит при `b = a` для двух объектов одной структуры без массивов flexible member?
CC17
struct pair { int x,y; };
struct pair a={1,2}, b;
b=a;
Вопрос 2 из 20
Как обратиться к полю id через объект `struct user u`?
CC17
struct user { int id; };
struct user u={.id=7};
Вопрос 3 из 20
Что даёт designated initializer?
CC17
struct point p = { .y = 4, .x = 2 };
Вопрос 4 из 20
Где допустим flexible array member?
Вопрос 5 из 20
Почему поверхностное копирование структуры с `char *name` может быть недостаточным?
CC17
struct user { char *name; };
struct user b = a;
Вопрос 6 из 20
Каков минимально гарантированный размер union?
Вопрос 7 из 20
Какой дизайн безопаснее для значения, которое может быть int или double?
CC17
struct value { enum kind kind; union { int i; double d; } as; };
Вопрос 8 из 20
Что напечатает программа по строго переносимому C?
CC17
union U { float f; unsigned int i; };
union U u={.f=1.0f};
printf("%u\n",u.i);
Вопрос 9 из 20
Как переносимо получить объектное представление float в массив байтов?
CC17
float f=1.0f;
unsigned char bytes[sizeof f];
memcpy(bytes,&f,sizeof f);
Вопрос 10 из 20
Почему union не экономит память, если программе одновременно нужны оба значения?
Вопрос 11 из 20
Какие значения получат константы?
CC17
enum color { RED=1, GREEN=5, BLUE };
Вопрос 12 из 20
Подходит ли enum для независимых флагов, которые могут быть включены одновременно?
CC17
enum perm { READ=1u<<0, WRITE=1u<<1, EXEC=1u<<2 };
unsigned flags=READ|WRITE;
Вопрос 13 из 20
Почему нельзя полагаться на `sizeof(enum status)==4` во внешнем формате?
Вопрос 14 из 20
Что должен делать switch по enum при получении значения вне известных констант?
CC17
switch (state) {
case READY: handle_ready(); break;
case BUSY:  handle_busy();  break;
}
Вопрос 15 из 20
Как сравнивать значение enum?
Вопрос 16 из 20
Что возвращает offsetof(struct S, member)?
CC17
size_t off=offsetof(struct record,id);
Вопрос 17 из 20
Почему sizeof(struct S) может быть больше суммы sizeof её полей?
Вопрос 18 из 20
Можно ли сравнивать две структуры через memcmp как логические значения?
CC17
int equal(const struct S *a,const struct S *b){ return memcmp(a,b,sizeof *a)==0; }
Вопрос 19 из 20
Какой способ сериализации структуры переносимее?
Вопрос 20 из 20
Что гарантирует `_Alignof(T)`?
CC17
printf("%zu\n", _Alignof(struct S));

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу