Рубрики

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

Что произойдет, когда мы скомпилируем и запустим следующий фрагмент программы на C?

#include "stdio.h"

int main()

{

 int a = 10;

  

 printf("=%d %d=",(a+1));

  

 return 0;

}

(А) = 11 0 =
(B) = 11 X = где X будет зависеть от реализации компилятора
(C) Неопределенное поведение
(D) Ошибка компилятора из-за отсутствия аргумента для второго% d

Ответ: (с)
Объяснение: В контексте printf () и fprintf (), согласно стандарту C C11, пункт 7.21.6.1,
«Если для формата недостаточно аргументов, поведение не определено. Если формат исчерпан, а аргументы остаются, избыточные аргументы оцениваются (как всегда), но в противном случае игнорируются ».
Некоторые реализации могут выбрать для печати = 10 0 =, в то время как другие реализации могут выбрать для печати = 11 X =. Вот почему вывод вышеуказанной программы варьируется в зависимости от компилятора и платформы. Следовательно, правильный ответ — C).
Тест на этот вопрос

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

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

0.00 (0%) 0 votes