Главная->Інформатика та програмування->Содержание->Целые величины в качестве булевых

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн

Целые величины в качестве булевых

Из всего вышесказанного у вас могло сложиться впечатление, что для того, что- бы выражение имело истинное или ложное значение, необходимо, чтобы это вы- ражение включало в себя операцию отношения. На самом деле любое выражение целого типа можно рассматривать как истинное или ложное, даже если это выра- жение является обычной переменной. Выражение x рассматривается как истин- ное в том случае, если его значение не равно нулю, и как ложное, если его значе-

ние равно нулю. Очевидно, что в этом случае выражение !x истинно, если x равен нулю, и ложно, если x не равен нулю.

Давайте применим описанную концепцию на практике. Пусть в нашей при- ключенческой игре появятся грибы, причем расти они будут в тех точках, где обе координаты, x и y, будут кратны 7 (в приключенческих играх грибы, найден- ные героем, придают ему различные сверхъестественные возможности). Как мы знаем, кратность x числу 7 равносильна тому, что остаток от деления x на 7 равен нулю. Таким образом, применяя операцию остатка от деления, можно записать условие, определяющее местоположение грибов:

if ( x%7==0 && у%7==0 ) cout << "Здесь находится гриб.\n";

С учетом того, что выражения могут рассматриваться как истинные или лож- ные без применения операций отношения, мы можем записать условие, стоящее в первой строке, более кратко следующим образом:

if ( !(x%7) && !(у%7) ) // если x%7 равно 0 и у%7 равно 0

Как мы говорили, логические операции && и || имеют более низкий приори- тет, чем операции отношения. В таком случае зачем мы ставим скобки вокруг x%7 и у%7? Мы делаем это потому, что, несмотря на принадлежность операции ! к логическому типу, эта операция является унарной и имеет более высокий приоритет, чем бинарные операции отношения.

 

43