Результаты прохождения теста C основы пользователем Валерий_Жбанов

Результат прохождения теста "C основы" - Не пройден

+42

Какой тип указателя может указывать на любой тип данных?
Ваши ответы
void *ptr;
Объяснение:

Правильный ответ: void *ptr. Такие указатели существуют для использования в определенных случаях, например передача указателей в функции, которые работают независимо от типа данных, на который указывает указатель.

Что будет выведено на экран при i равном 3?
switch(i) 
{ 
case 0: 
 printf("Переменная равна нулю\n"); 
 break; 
case 1: 
 printf("Переменная равна единице\n"); 
 break; 
default: 
 printf("Переменная равна %d\n", i++); 
 break; 
} 
Ваши ответы
Переменная равна 3
Чему будет равно значение x:
int x = (3, --x + 2);
Ваши ответы
Не определено
Объяснение:

Значение x в стеке не инициализируется. Оператор запятая возвращает правый аргумент, т.е. --x + 2. Следовательно значение не определено.

Какие из ниже перечисленных объявлений корректны?
Ваши ответы
int b[255];
Объяснение:

Массивы нулевой длины разрешены стандартом. int с[] разрешен в объявлении функции, а int d[*] только в объявлении прототипа функции.

Функция должна возвращать 1, если передаваемые параметры равны, и 0 в противном случае. Какие строки кода содержат логические ошибки либо ошибки компиляции?
int is_equal(int a, int b) { 
 if (a = b)  // 1 
 return 1;  // 2 
 return 0;  // 3 
} 
Ваши ответы
//1
Объяснение:

в первой строчке используется оператор присваивания вместо оператора сравнения

В одном файле объявлены следующие переменные, укажите строчки в которых есть ошибки (если они есть)
int count;                      //1 
int count;                      //2 
extern int ext_val;             //3 
extern short ext_val;           //4 
extern int value;               //5 
extern int value;               //6 
Ваши ответы
2,4
Объяснение:

Ошибки:
//2 - повторное объявление
//4 - несоответствие типов
Класс памяти extern показывает, что переменная является ссылкой на переменную с тем же именем. А в //4 ошибка, т.к. типы переменной не совпадают(это ведь как-никак одна переменная)

Является ли знак , (запятая) оператором в C?
Ваши ответы
Да
Объяснение:

Да, это оператор последовательного вычисления

Что из перечисленного не является оператором перехода?
Ваши ответы
return
Что будет выведено на экран?
#include <stdio.h> 
 
void mystery(int a, int b) { 
  (!(a<b))?printf("First"):printf("Second"); 
} 
 
int main() { 
  int a = 5, b = 4; 
  mystery(a, b); 
  return 0; 
}
Ваши ответы
Second
Объяснение:

(!(a<b)) эквивалентно a>b, поэтому выведет First.

Что произойдет в результате компиляции и выполнения такого кода:
#include <stdio.h> 
const int a = 12;       
int * b = &a;       //1 
int c = a;          //2 
 
int main () { 
 printf ("%d %d %d", a, *b, c+*b); 
 return 0; 
} 
Ваши ответы
Будет напечатано: 12 12 24
Объяснение:

Переменные, объявляемые вне функций могут при этом инициализироваться только константными значениями. Ошибка в строке 1 вызвана несоответствием типов указателя и переменной.

Укажите строки, в которых содержатся ошибки:
void Test(const int **a) { 
 a = 0;    // 1 
 *a = 0;   // 2 
 **a = 0;  // 3 
} 
Ваши ответы
// 1
Объяснение:

В строке //3 происходит попытка присвоения значения константе.

Что произойдет в результате компиляции и выполнения данного кода:
#include <stdio.h> 
 
void f() { printf("%d", 1); } 
 
int main() { 
   void (*a)() = f; // 1 
   a();             // 2 
   return 0; 
} 
Ваши ответы
Ошибка компиляции в строке 1
Как объявить переменную a, являющуюся указателем на константный указатель типа T?
Ваши ответы
const T * const *a;
Объяснение:

1) T ** const a; // константный указатель на указатель - запрещено присваивание вида " a = ... " 2) T * const *a; // указатель на константный указатель - запрещено присваивание вида " *a = ..." 3) T const **a; // указатель на указатель на константу - запрещено присваивание вида " ** a= ..."

Укажите все верные утверждения относительно следующих перечислений:
enum en1 { ELEM1_1, ELEM1_2, ELEM1_4 }; 
enum en2 { ELEM2_1, ELEM2_2, ELEM2_3, }; 
enum { ELEM3_1, ELEM3_2, ELEM3_4 } en3; 
typedef enum {ELEM4_1 = 1, ELEM4_2, ELEM4_4 } en4; 
Ваши ответы
ELEM4_2 == ELEM1_4 == ELEM2_3 == ELEM3_4
Различие между en1 и en3 заключается только в названии их и их элементов.
Что выведет следующая программа?
#include <stdio.h> 
func () { 
  return 1, 2, 3; 
} 
main () { 
  int a, b, c; 
  a, b, c = func(); 
  printf("%d %d %d\n", a, b, c); 
  return 0; 
} 
Ваши ответы
0 0 3