Изучаем С++ создавая игры в ue4 Уилльям Шериф Изучайте программирование С++ с интересным применением реально мира, что позволит вам создавать ваши собственные игры!



Pdf көрінісі
бет86/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   82   83   84   85   86   87   88   89   ...   252
Switch против if  
Switch  похож  на  цепочку  if  /  else  if  /  else,  что  мы  видели  ранее.  Однако,  switch 
быстрее  образует  код  чем  цепочка  if  /  else  if  /  else.  Интуитивно  switch  сразу 
переходит к выполнению подходящей секции кода. Цепочка if / else if / else может 
включать  в  себя  более  сложные  сравнения  (включая  логические  сравнения), 
которые  занимают  у  ЦПУ  больше  времени.  Главная  причина  того  что  вы  будите 


71 | 
С т р а н и ц а
 
 
использовать  оператор  if,  в  том  что  вы  можете  сделать  больше  со  своими 
специально подобранными сравнениями внутри скобок.  
Подсказка 
Оператор  enum  на  самом  деле  является  типом  int.  Чтобы  подтвердить  это, 
применим следующий код: 
cout << "Fish=" << Fish << 
" Bread=" << Bread << 
" Apple=" << Apple << 
" Orange=" << Orange << endl; 
Вы увидите целочисленные значения enum, так что теперь вы знаете. 
Иногда  программистам  нужно  группировать  множество  значений  под  одной 
меткой case в switch. Скажем, у нас есть enum такого вида: 
enum Vegetables { Potato, Cabbage, Broccoli, Zucchini };
 
Программист  хочет  сгруппировать  всю  зелень  вместе,  так  что  он  пишет 
утверждение switch следующим образом: 
switch( veg ) 
{  
case Zucchini: // 
цукини пролетает мимо, так как break 
case Broccoli: // 
не был написан здесь 
cout << "
Зелень!" << endl; 
break; 
default: 
cout << "
Нет зелени!" << endl; 
break; 
}
 
В  этом  случае  Zucchini  терпит  неудачу  и  выполняется  код  Broccoli.  Не  зелёные 
овощи  в  метке  случая  default.  Чтобы  предотвратить  не  выполнение  как  в 
предыдущем  примере,  вы  должны  не  забывать  вводить  завершающий  оператор 
break после каждой метки case.  
Мы  можем  написать  ещё  одну  версию  switch,  которая  не  пропускает  Zucchini  с 
применением  завершающего оператора break: 
switch( veg ) 
{  
case Zucchini
: // цукини больше не пропускается, так как есть оператор break 
cout << "
Цукини зелёное" << endl; 
break;// 
останавливает на случае цукини, не доходя до 
case Broccoli: // 
того что написано здесь 
cout << "
Брокколи зелёная" << endl; 
break; 
default: 


72 | 
С т р а н и ц а
 
 
cout << "
Нет зелени!" << endl; 
break; 
}
 
Заметьте,  что  хорошая  привычка  в  программировании,  ставить  оператор  break  и 
после случая default, хоть это и последний случай в перечислении
Упражнение 
Завершите следующую программу, которая имеет объект enum с рядом верховых 
животных,  из  которых  можно  выбирать.  Напишите  утверждение  switch,  которое 
выводит следующие сообщения для выбранного животного: 
Конь 
Конь отважный и мощный. 
Кобыла 
Эта лошадь белая и красивая. 
Мул 
Вам дали мула для езды. Вы заслужили это. 
Овца 
Бее! Овца может спокойно нести вашу поклажу. 
Чокобо 
Чокобо!  
Помните,  что  объект  enum  является  на  самом  деле  типом  int.  Первое  вводное  в 
enum по умолчанию 0, но вы можете дать объекту enum любое стартовое значение 
по своему желанию, используя оператор =. Последовательные значения в объекте 
enum это целые числа, расположенные по порядку. 


Достарыңызбен бөлісу:
1   ...   82   83   84   85   86   87   88   89   ...   252




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

    Басты бет