
- •Спецификаторы типа const и volatile
- •Спецификатор типа const
- •Спецификатор const имеет ряд важных
- •// Этот код неверен.
- •Спецификатор const можно также
- •Переменная типа const может быть
- •Наконец, спецификатор const
- •Спецификатор типа volatile
- •int clock, timer;// ...
- •volatile int clock;
- •Спецификаторы классов памяти
- •Спецификатор класса памяти auto
- •Спецификатор extern объявляет переменную, но не выделяет для нее области памяти.
- •Статические переменные
- •Локальные static-переменные
- •Ключевое различие между
- •static int count;
- •int r_avg(int i); int main()
- •Глобальные static-переменные
- •Итак, имя локальной static-
- •Регистровые переменные
- •Спецификатор register в объявлении
- •int signed_pwr(register int m, register int e)
- •Перечисления
- •В следующем примере
- •Определив перечисление, можно
- •Важно понимать, что каждый
- •Несмотря на то что перечислимые
- •Откорректировать предыдущую
- •// Слово "McIntosh" на экран таким образом не попадет.
- •Отобразить на экране названия сортов яблок, связанных с переменной fruit.
- •Ключевое слово typedef
- •Общий формат записи инструкции typedef таков,
- •balance over_due;
- •Поразрядные операторы
- •Значение 223, используемое в
- •if(status & 8)
- •// Отображение конфигурации битов в байте. void disp_binary(unsigned u)
- •Поразрядный оператор ИЛИ, в
- •Введите число между 0 и 255: 99
- •Операторы сдвига
- •Здесь элемент число_битов
- •void disp_binary(unsigned u); int main()
- •Результаты выполнения этой программы таковы.
- •if(условие)
- •Оператор "?" называется
- •while(something)
- •Оператор "запятая"
- •Несколько присваиваний "в
- •Использование ключевого слова sizeof
- •int nums[4];
- •Динамическое распределение
- •Система динамического
- •Поскольку объем "кучи" конечен,
- •Выделение памяти для массивов
- •Динамическое распределение
- •Функция malloc() имеет такой
- •Сводная таблица приоритетов
Результаты выполнения этой программы таковы.
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
if(условие)
переменная = выражение 1; else
переменная = выражение 2;
Оператор "?" называется
тернарным, поскольку он работает с тремя операндами. Вот его общий формат записи:
Выражение1? Выражение2 : Выражение3;
while(something)
{
х = count > 0 ? 0 : 1;
// …
}
while(something)
{
if(count >0) x = 0;
else x = 1;
// …
}
#include <iostream> using namespace std int div_zero(); int main()
{
int i, j, result;
cout << "Введите делимое и делитель: ";cin >> i >> j;
// Эта инструкция не допустит возникновения ошибки деления на нуль.
result = j ? i/j : div_zero();
cout << "Результат: " << result;
return 0;
}
int div_zero()
{
cout << "Нельзя делить на нуль. \n";
}
Оператор "запятая"
var = (count=19, incr=10, count+1);
#include <iostream> using namespace std; int main()
{
int i, j;
j = 10;
i = (j++, j+100, 999+j);
cout << i;
return 0;
}
Несколько присваиваний "в
одном”
Язык C++ позволяет применить очень удобный метод одновременного присваивания многим переменным одного и того же значения.
count = incr = index = 10;
Использование ключевого слова sizeof
sizeof (type)
sizeof value
Оператор sizeof во время
компиляции программы получает размер типа или значения.
#include <iostream> using namespace std; int main()
{
char ch;
int i;
cout << sizeof ch; // размер типа char
cout << sizeof i; // размер типа int
cout << sizeof (float); // размер типа float
cout << sizeof (double); // размер типа double
return 0;
}