Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет78/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   74   75   76   77   78   79   80   81   ...   256
Байланысты:
Бьерн Страуструп. Язык программирования С . М Бином, 2011

3.3 Сводка операторов 
Полное и последовательное описание операторов С++ содержится в $$R.6. Советуем ознакомиться с 
этим разделом. Здесь же дается сводка операторов и несколько примеров. 
Синтаксис операторов 
оператор: 
описание 
{ список-операторов opt } 
выражение opt ; 
if ( выражение ) оператор 
if ( выражение ) оператор else оператор 
switch ( выражение ) оператор 
while ( выражение ) оператор 
do оператор while ( выражение ) 
for (начальный-оператор-for выражение opt; выражение opt) оператор 
case выражение-константа : оператор 
default 

оператор 
break 

continue 

return выражение opt ; 
goto идентификатор ; 
идентификатор : оператор 
список-операторов: 
оператор 
список-операторов оператор 
начальный-оператор-for: 
описание 
выражение opt ; 
Обратите внимание, что описание является оператором, но нет операторов присваивания или вызова 
функции (они относятся к выражениям). 
3.3.1 Выбирающие операторы 
Значение можно проверить с помощью операторов if или switch: 
if ( выражение ) оператор 
if ( выражение ) оператор else оператор 
switch ( выражение ) оператор 


Бьерн Страуструп.
Язык программирования С++ 
 
91 
В языке С++ среди основных типов нет отдельного булевского (тип со значениями истина, ложь). Все 
операции отношений: 
== != < > <= >= 
дают в результате целое 1, если отношение выполняется, и 0 в противном случае. Обычно определяют 
константы TRUE как 1 и FALSE как 0. 
В операторе if, если выражение имеет ненулевое значение, выполняется первый оператор, а иначе 
выполняется второй (если он указан). Таким образом, в качестве условия допускается любое 
выражение типа целое или указатель. Пусть a целое, тогда 
if (a) // ... 
эквивалентно 
if (a != 0) ... 
Логические операции 
&& || ! 
обычно используются в условиях. В операциях && и || второй операнд не вычисляется, если результат 
определяется значением первого операнда. Например, в выражении 
if (p && l
count) // ... 
сначала проверяется значение p, и только если оно не равно нулю, то проверяется отношение l
>count. Некоторые простые операторы if удобно заменять выражениями условия. Например, вместо 
оператора 
if (a <= b) 
max = b; 
else 
max = a; 
лучше использовать выражение 
max = (a<=b) ? b : a; 
Условие в выражении условия не обязательно окружать скобками, но если их использовать, то 
выражение становится понятнее. 
Простой переключатель (switch) можно записать с помощью серии операторов if. Например, 
switch (val) { 
case 
1: 
f(); 
break; 
case 
2: 
g(); 
break; 
default: 
h(); 
break; 

можно эквивалентно задать так: 
if (val == 1) 
f(); 
else if (val == 2) 
g(); 
else 
h(); 
Смысл обеих конструкций совпадает, но все же первая предпочтительнее, поскольку в ней нагляднее 
показана суть операции: проверка на совпадение значения val со значением из множества констант. 


Бьерн Страуструп.
Язык программирования С++ 
 
92 
Поэтому в нетривиальных случаях запись, использующая переключатель, понятнее. 
Нужно позаботиться о каком-то завершении оператора, указанного в варианте переключателя, если 
только вы не хотите, чтобы стали выполняться операторы из следующего варианта. Например, 
переключатель 
switch (val) { // возможна ошибка 
case 
1: 
cout << "case 1\n"; 
case 
2: 
cout << "case 2\n"; 
default: 
cout << "default: case not found\n"; 

при val==1 напечатает к большому удивлению непосвященных: 
case 1 
case 2 
default: case not found 
Имеет смысл отметить в комментариях те редкие случаи, когда стандартный переход на следующий 
вариант оставлен намеренно. Тогда этот переход во всех остальных случаях можно смело считать 
ошибкой. Для завершения оператора в варианте чаще всего используется break, но иногда 
используются return и даже goto. Приведем пример: 
switch (val) { // возможна ошибка 
case 
0: 
cout << "case 0\n"; 
case1: 
case 1: 
cout << "case 1\n"; 
return; 
case 
2: 
cout << "case 2\n"; 
goto 
case1; 
default: 
cout << "default: case not found\n"; 
return; 

Здесь при значении val равном 2 мы получим: 
case 2 
case 1 
Отметим, что метку варианта нельзя использовать в операторе goto: 
goto case 2; // синтаксическая ошибка 


Достарыңызбен бөлісу:
1   ...   74   75   76   77   78   79   80   81   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет