Указатели

Задания раздела 2.3.2
2.18. Напишите код, изменяющий значение указателя. Напишите код для изменения значения, на которое указывает указатель.
2.19. Объясните основные отличия между указателями и ссылками.
2.20. Что делает следующая программа?
int i=42;
int *p1=&i;
*p1=*p1 * *p1;
2.21. Объясните каждое из следующих определений. Укажите, все ли они корректны и почему.
int i=0;
(a) double* dp=&i;
(b) int *ip=i;
(c) int *p=&i;
2.22. С учетом того, что p является указателем на тип int, объясните следующий код:
if(p) // ...
if(*p) // ...
2.23. Есть указатель p, можно ли определить, указывает ли он на допустимый объект? Если да, то как? Если нет, то почему?
2.24. Почему инициализация указателя p допустима, а указателя lp нет.
int i=42;
void *p=&i;
long *lp=&i;
Читать далее «Указатели»

Ссылки

Задания раздела 2.3.1
2.15. Какие из следующих определений недопустимы (если таковые есть)? Почему?
(a) int ival=1.01;
(b) int &rval1=1.01;
(c) int &rval2=ival;
(d) int &rval3;
2.16. Какие из следующих присвоений недопустимы (если таковые есть)? Если они недопустимы, объясните, что они делают.
int i=0, &r1=i; double d=0, &r2=d;
(a) r2=3.14159;
(b) r2=r1;
(c) i=r2;
(d) r1=d;
2.17. Что выводит следующий код?
int i, &ri=i;
i=5; ri=10;
std::cout << i << " " << ri << std::endl;
Читать далее «Ссылки»

Область видимости имён

Задания раздела 2.2.4
2.13. Каково значение переменной j в следующей программе?
int i=42;
int main ()
{
int i=100;
int j=i;
}
2.14. Допустим ли следующий код? Если да, то какие значения он отобразит на экране?
int i=100, sum=0;
for (int i=0; i!=10;++i) sum+=i;
std::cout << i << " " << sum << std::endl;
Читать далее «Область видимости имён»

Идентификаторы

Задания раздела 2.2.3
2.2.3. Какие из приведенных ниже имен недопустимы (если таковые есть)?
(a) int double=3.14;
(b) int  _;
(c) int catch-22;
(d) int 1_or_2=1;
(e) double Double=3.14;
Читать далее «Идентификаторы»

Объявления и определения

Задания раздела 2.2.2
2.11. Объясните, приведены ли ниже объявления или определения.
(a) extern int ix=1024;
(b) int iy;
(c) extern int iz;
Читать далее «Объявления и определения»

Переменные

Задания раздела 2.2.1
2.9. Объясните следующие определения. Если среди них есть некорректные, объясните, что не так и как это исправить.
(a) std::cin >> int input_value;
(b) int i={3.14};
(c) double salary=wage=9999.99;
(d) int i=3.14;
2.10. Каковы исходные значения, если таковые вообще имеются, каждой из следующих переменных?
std::string global_str;
int global_int;
int main()
{
int local_int;
std::string local_str;
}
Читать далее «Переменные»

Литералы

Задания раздела 2.1.3
2.5. Определите тип каждого из следующих литералов. Объясните различия между ними:
(a): 'a', L'a', "a", L"a"
(b): 10, 10u, 10L, 10uL, 012, 0хC - всё это целочисленные литералы
(c) 3.14, 3.14f, 3.14L - литералы с плавающей запятой
(d): 10, 10u, 10., 10e-2
2.6. Имеются ли различия между следующими определениями:
int month=9, day=7;
int month=09, day=07;
2.7. Какие значения представляют эти литералы? Какой тип имеет каждый из них?
(a) "Who goes with F\145rgus?\012"
(b) 3.14e1L
(c) 1024f
(d) 3.14L
2.8. Напишите программу, использующую управляющие последовательности для вывода значения 2M, сопровождаемого новой строкой. Модифицируйте программу так, чтобы вывести 2, затем табуляцию, потом М и наконец символ новой строки.
Читать далее «Литералы»

Преобразование типов данных

Задания раздела 2.1.2
2.3. Какой будет вывод следующего кода?
unsigned u=10, u2=42;
std:: cout << u2-u << std::endl;
std:: cout << u-u2 << std::endl;
int i=10, i2=42;
std:: cout << i2-i << std::endl;
std:: cout << i-i2 << std::endl;
std:: cout << i-u << std::endl;
std:: cout << u-i << std::endl;
2.4. Напишите программу для проверки правильности ответов. При неправильных ответах изучите тему еще раз.
Читать далее «Преобразование типов данных»

Типы данных

Задания раздела 2.1.1
2.1. Каковы различия между типами int, long, long long и short? Между знаковыми и беззнаковыми типами? Между типами float и double.
2.2. Какие типы вы использовали бы для коэффициента, основной суммы и платежей при вычислении выплат по закладной? Объясните почему вы выбрали каждый из типов.
Читать далее «Типы данных»

Работа с классом вслепую. Часть 3

Задания раздела 1.6
1.25. Используя загруженный с веб-сайта заголовок Sales_item.h, откомпилируйте и запустите программу для книжного магазина, представленную в этом разделе.
Читать далее «Работа с классом вслепую. Часть 3»