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

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

+111

При компиляции и запуске данная программа:
// Example program (С++11) 
#include <iostream> 
class A{ 
   const int val = 1;         
   friend void f(A& a) { std::cout << a.val; } 
}; 
int main() 
{     
   A a; 
   f(a); 
}
Ваши ответы
выведет на экран цифру 1
Объяснение:

Обычный вызов дружественной функции.
Так как она дружественная для класса А, то все приватные члены A доступны внутри тела функции через объект класса А.

Чему равно значение переменной res ?
#define F(x) (2*x*x) 
 
int main() { 
   int a = 1, b = 2; 
   int res = F(a + b); 
   return 0; 
} 
Ваши ответы
6
Объяснение:

Значение переменно равно 6. Т.к. данный макрос раскроется в структуру вида: 2*а+b*a+b. Для того чтобы получить в результате 2*(a+b)*(a+b) необходимо определить макрос следующим образом:

Дана функция:
int sum(int a, int b) 
{ 
   return a + b; 
} 
 
Как правильно вызвать эту функцию?
Ваши ответы
sum(7, 8);
Что будет выведено на экран в результате работы программы?
#include <iostream> 
using namespace std; 
 
template <typename T> class Counter { 
public: 
   Counter() { 
       cout << ++x; 
   } 
 
   static int x; 
}; 
 
template <typename T> int Counter<T>::x; 
 
int main() { 
   Counter<int> a; 
   Counter<int> b; 
   Counter<double> c; 
   Counter<Counter<double>> d; 
   return 0; 
}
Ваши ответы
1211
Относится ли тип char к целочисленным типам?
Ваши ответы
Да
Объяснение:

Тип данных char — это целочисленный тип данных, который используется для представления символов. То есть, каждому символу соответствует определённое число из диапазона [0;255]. Тип данных char также ещё называют символьным типом данных, так как графическое представление символов в С++ возможно благодаря char. Для представления символов в C++ типу данных char отводится один байт, в одном байте — 8 бит, тогда возведем двойку в степень 8 и получим значение 256 — количество символов, которое можно закодировать. Таким образом, используя тип данных char
можно отобразить любой из 256 символов. Все закодированные символы представлены в таблице ASCII.

Что будет выведено на экран в результате выполнения программы?
#include <iostream> 
 
int main(void) 
{ 
   int a = 5; 
   a <<= 3; 
   std::cout << a; 
 
   return 0; 
}
Ваши ответы
40
Какая проблема в данной программе?
#include <iostream> 
#include <cstring> 
 
char * CutString(const char * str1) 
{ 
   char str2[4];  
   strncpy(str2, str1, 3);  
   str2[3] = '\0';    //1  
   return str2;   
} 
 
int main() 
{ 
     char * s = CutString("aaaaaaa"); 
     std::cout<<(s); 
} 
Ваши ответы
Неопределенное поведение, так как str2 не будет существовать на момент cout
Объяснение:

После выхода из функции str2 перестает существовать, потому cout ее не выведет.

Что будет выведено на экран:
int main() 
{ 
  float t = 0.5; 
  float x = 0; 
 
  while (x < 1.) 
  { 
      x += t; 
      t = t/2; 
  } 
 
  printf("%6.2f", x); 
  return 0; 
} 
Ваши ответы
1.00
Какое значение будет иметь переменная i?
int i = 5; 
i = 1,2,3,++i; 
Ваши ответы
2
Что выведет в консольное окно данный программный код?
#include <iostream> 
#include <climits> 
 
using namespace std; 
 
int main() 
{ 
   int nInt = INT_MAX; 
   int nCharBit = CHAR_BIT; 
 
   cout << "Width nInt " << nInt<<endl; 
   cout << "Width nCharBit" << nCharBit << endl; 
 
   return 0; 
} 
Ваши ответы
Зависит от реализации.
Объяснение:

В стандарте С++ под байтом понимается фундаментальная единица хранения данных, состоящая из непрерывной последовательности бит, число которых должно быть достаточным, чтобы можно было бы вместить любой член базового набора символов. Базовый набор ASCII, например, состоит из символов, которые можно представить набором из 8 бит, поэтому системы основанные на ASCII, UTF-8 используют байт 8-битный, так как восемь бит вполне достаточно, чтобы закодировать любой член основного базового набора. Системы основанные на UNICODE в одном байте могут, например, содержать 16 или 32 бит. Целое int может оказаться и 16-битным, и 32-битным, и даже шириной 64 бит — главное, что оно не может быть меньше 16 бит. Все зависит от реализации базового набора символов.

Чему будет равно значение переменной с:
int a = 4; 
int b = 3; 
double c = a / b;
Ваши ответы
1
Объяснение:

Т.к. a и b типа int, то a/b - целочисленное деление, значит a/b=1.

Что будет выведено на экран на х86 (little-endian):
#include <iostream> 
 
int main(int argc, char *argv[]) 
{ 
   int a = 0xaabbccdd; 
   unsigned char* b = (unsigned char*)&a;    
   printf( "%x", b[2]);                                    
 
   return 0; 
} 
Ваши ответы
bb
Могут ли управляющие конструкции быть вложенными?
Ваши ответы
нет
Что выведет следующий кусок кода?
int value = 5; 
cout << value += 3; 
Ваши ответы
8
Объяснение:

Произойдёт ошибка компиляции, так как операция сдвига влево имеет больший приоритет нежели операция суммирования с присваиванием.

Что будет выведено на экран?
#include <iostream> 
#include <stdlib.h> 
 
using namespace std; 
 
int func1( int n ...) 
{ 
   return n; 
} 
 
int func2( int n, int m ... ) 
{ 
   return m; 
} 
 
int func3( int n = 1) 
{ 
   return n; 
} 
 
int main(int argc, char *argv[]) 
{ 
   cout << func1( 1, 2, "cat") + func2( 1, 2, "dog", 3)  + func3()  << endl; 
   return 0; 
} 
Ваши ответы
5
Объяснение:

func1 и func2 - функции, которые могут принимать аргументы, количество и типы которых заранее не известны. В func3 происходит инициализация локальной пременной n=1 по умолчанию, так как функция вызывается без аргументов