C ++ - как работает || оператор работает? - PullRequest
1 голос
/ 03 марта 2012

Я видел этот синтаксис в программе, но я не уверен, что происходит в обратной части. Что означает || (или)? Означает ли это, что метод возвращает true, когда хотя бы один из a и b равен true, и возвращает false, когда оба они равны false?

    bool A::truthValue() {
    bool a = true;
    bool b = true;
    if(........)
       a= false;
    if(........)
       b=false

    return (a || b);
}

Ответы [ 4 ]

5 голосов
/ 03 марта 2012

Будет возвращено значение true, если b или a имеет значение true. Это означает, что результат (см. Таблицу):

a | b | result
t | t | t
f | t | t
t | f | t
f | f | f

На самом деле в вашем конкретном случае false будет возвращено, только если оба if утверждения станут истинными.

РЕДАКТИРОВАТЬ Итак - ваше предложение верно.

1 голос
/ 03 марта 2012

Означает ли это, что метод возвращает true, если, по крайней мере, один из a и b равен true, и возвращает false, если оба они ложны?

Это означает именно это.

1 голос
/ 03 марта 2012

Это означает возврат true, если a или b - true.

0 голосов
/ 03 марта 2012

Точнее: || Оператор сначала оценит выражение на левой стороне. Если это правда, выражение с правой стороны игнорируется и все || выражение оценивается как истина. Если левое выражение ложно, правое выражение оценивается; если это правда, весь || выражение оценивает true, иначе false.

Это поведение четко определено и не тривиально. Это логическое исключение применяется ко всем логическим операторам в C ++, что допускает такие вещи, как:

if (p && *p != '\0')

Что было бы недопустимо, если бы этого правила не существовало.

...