False
Final
Float
For
Friend
goto
if
inline
int
long
long long int
mutable
namespace
new
operator
override
private
protected
public
register
reinterpret_cast
return
short
signed
sizeof
static
staticassert
static_cast
struct
switch
template
this
throw
true
try
typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
wchar_t
while
следующие ключевые слова также зарезервированы:
compl or_eq
not xor
not_eq xor_eq
or
ПРИЛОЖЕНИЕ В
Приоритет
операторов
Хорошей практикой программирования является использо вание круглых скобок, которые явно разграничиваю т операции.
отсутствие круглых скобок компилятор прибегает к предопреде ленному порядку очередности, в котором использую тся операторы. Это приоритет операторов, приведенный в табл. В.1, которого при держивается компилятор C++ во избежание двусмысленности.
ПРИЛОЖЕНИЕ В. Приоритет операторов
А Б Л И Ц А В.1 . Приоритет операторов
Название
Область видимости
Прямое и косвенное обращение к члену класса, вызов функции, постфиксный инкремент и декремент
Префиксный инкремент и декремент, инверсия и не унарные минус и плюс, получение адреса и ссылки, а также операторы new, new [ ] ,delete, delete [ ] ,cast ing, sizeof ()
Обращение к элементу по указателю
Умножение, деление, деление по модулю
Сложение, вычитание
Сдвиг влево, сдвиг вправо
Меньше, меньш е или равно, больше, больше или равно
Равно, не равно
Побитовое AND
Побитовое исключающее OR
Побитовое OR
Логическое AND
Логическое OR
Троичный условный оператор
Операторы присвоения
Запятая
Оператор
. -> () ++ —
++ — А ! - + & * ()
★ _★
/ %
+ -
« »
== !=
&
А
1
&&
1
:
II
|
*II
|
II
|
1Г
|
+II
|
1II
|
ААII
|
VVII
|
г
|
|
|
|
|
|
|
|
ПРИЛОЖЕНИЕ Г
Ответы
644 ПРИЛОЖЕНИЕ Г. Ответы
Ответы к занятию 1
Контрольные вопросы
Интерпретатор — это инструмент, который интерпретирует исходный код (или промежуточный бинарный код) и выполняет определенные действия. Компилятор получает на входе исходный код и создает объектный файл. В языке C++ после ком пиляции и компоновки получается исполняемый файл, который может выполняться процессором непосредственно, без необходимости в дальнейшей интерпретации.
Компилятор получает на входе файл исходного кода C++ и создает объектный файл на машинном языке. Зачастую у вашего кода есть зависимости от библиотек и функций в других файлах кода. Создание этих связей и получение исполняемого файла, который интегрирует все явные и неявные зависимости, является задачей компоновщика.
Код. Компиляция для создания объектного файла. Компоновка для создания испол няемого файла. Выполнение для проверки. Отладка. Устранение ошибок в коде и повторение предыдущих этапов. В большинстве случаев компиляция и компонов ка — это один этап.
Стандарт С++11 поддерживает переносимую потоковую модель, позволяющую раз работчику создавать многопоточные приложения, используя стандартные поточные функции C++. Таким образом, он позволяет многоядерному процессору работать оптимально при одновременном выполнении различных потоков в приложении на его нескольких ядрах.
Упражнения
Отображает результат вычитания у из х, а также их умножения и сложения.
Результат: 2 48 14
Инструкция препроцессора io s tre a m , находящаяся в строке 1, должна начаться с #.
Отображает строку H ello Buggy World
Ответы к занятию 2
Контрольные вопросы
Код языка C++ чувствителен к регистру. I n t не является для компилятора указа нием целочисленного типа i n t .
Да.
/* если вы пишете комментарий, используя такой синтаксис в стиле С, то можете расположить его в нескольких строках */
Упражнения
Причина неудачи в чувствительности к регистру у компилятора C++. Ему неизвест но, что такое s t d : : C out и почему строка после этого не начинается с кавычки. Кро
ме того, функция m ain () всегда должна объявляться как возвращающая тип i n t .
Вот исправленная версия:
#include int main()
{
std::cout « "Is there a bug here?"; // теперь без ошибок return 0;
}
Эта программа подобна листингу 2.4 и демонстрирует вычитание и умножение:
##include #using namespace std;
Объявление функции
int DemoConsoleOutput();
int main()
{
Вызов функции DemoConsoleOutput(); return 0;
}
Определение функции int DemoConsoleOutput()
{
cout « "Performing subtraction 10 - 5 = " « 10 - 5 « endl; cout « "Performing multiplication 10 * 5 = " « 10 * 5 « endl;
return 0;
Результат
Performing subtraction 10 - 5 = 5
Performing multiplication 10 * 5 = 50
Ответы к занятию 3
Контрольные вопросы
В знаковом целом числе самый старш ий разряд означает знак числа (плюс или минус). Знаковое целое число, напротив, используется только для положительных
значений.
2. Д иректива препроцессора # d e f i n e инструктирует компилятор осущ ествить глобальную текстовую замену указанного значения. Однако это не учитывает
646 ПРИЛОЖЕНИЕ Г. Ответы
безопасности типов и является примитивным способом определения констант.
Поэтому его следует избегать.
Для гарантии, что она содержит определенное, а не случайное значение.
2.
Имя не несет смысловой нагрузки и повторяет название типа. Хотя такой код ком пилируется нормально, людям его трудно читать и поддерживать. Такого желатель но избегать. Для переменных лучш е использовать описательные имена, которые отражают их цель. Например:
int Age = 0;
Упражнения
Это можно сделать несколькими способами: enum YOURCARDS {АСЕ = 43, JACK, QUEEN, KING};
АСЕ = 43, JACK = 44, QUEEN = 45, KING = 46
Или так..
enum YOURCARDS {ACE, JACK, QUEEN = 45, KING};
ACE = 0, JACK = 1, QUEEN = 45, a KING = 46
П осмотрите код листинга 3.4 и адаптируйте его для получения ответа на этот вопрос.
Вот программа, которая запрашивает радиус круга, а затем вычисляет его площадь
периметр:
#include
using namespace std;
int main()
{
const double Pi = 3.1416;
cout «
|
"Enter
|
circle's
|
radius: ";
|
|
double
|
Radius = 0;
|
|
|
cin »
|
Radius;
|
|
|
|
cout «
|
"Area =
|
" « Pi
|
* Radius * Radius «
|
endl;
|
cout «
|
"Circumference = " « 2 * Pi * Radius
|
« endl;
|
return
|
0;
|
|
|
|
}
Результат
Enter circle's radius: 4
Area = 50.2656
Circumference = 25.1328
Если вы сохраните результат вычисления площади и периметра в целочисленной переменной, то при компиляции получите предупреждение (а не ошибку), и вывод будет выглядеть следующим образом:
Результат
Enter circle's radius: 4
Area = 50
Circumference = 25
Ключевое слово a u t o требует от компилятора автоматически выбрать тип пере менной в зависимости от инициализирующего ее значения. В приведенном коде нет инициализации, и оператор приведет к отказу при компиляции.
Ответы к занятию 4
Контрольные вопросы
0 и 4 — это отсчитываемые от нуля индексы первого и последнего элементов мас сива с пятью элементами.
Нет, так как известна их небезопасность, особенно при обработке пользовательско го ввода, поскольку они позволяют ввести строку длиннее массива.
Один нулевой завершающий символ.
Все зависит от того, как она используется. Если она используется в операторе c o u t, например, то механизм отображения будет читать поеледовательность-символов, пока не найдет заверш ающ ий нулевой символ. При его отсутствии он пересечет границы массива и, возможно, приведет к краху приложения.
Достаточно заменить в объявлении вектора часть i n t на часть c h a r . vector DynArrChars (3);
Упражнения
Вот что получилось. Приложение инициализируется значением ROOK (ладья), но оно достаточно простое, чтобы вы поняли все сами.
Do'stlaringiz bilan baham: |