Рубрики

ВОРОТА | GATE-CS-2016 (набор 1) | Вопрос 22

Рассмотрим следующую C-программу.

void f(int, short);

void main()

{

  int i = 100;

  short s = 12;

  short *p = &s;

  __________ ;   // вызов f ()

}

Какое из следующих выражений, если их поместить в пустое поле выше, НЕ приведет к ошибке проверки типа?

(A) f (s, * s)

(B) i = f (i, s)
(C) f (i, * s)
(D) f (i, * p)

Ответ: (D)
Объяснение: i — целое число, а * p — значение указателя на short.

1) Опция 1 неверна, потому что мы передаем «* S» в качестве второго аргумента, чтобы проверить, что S не является переменной-указателем.
2) Второй вариант — мы пытаемся сохранить значение f (i, s) в i, но посмотрите на определение функции вне main, у нее нет возвращаемого типа. Это просто недействительно, так что назначение неверно. Так ошибка
3) Вариант 3 неверен по той же причине, по которой вариант 1 неверен
4) Так что вариант d правильный.
Тест на этот вопрос

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

ВОРОТА | GATE-CS-2016 (набор 1) | Вопрос 22

0.00 (0%) 0 votes