В синтаксисе C ++ может условие if else возвращать int и все равно выполнять операторы внутри - PullRequest
1 голос
/ 21 июля 2010

Вот код, который компилируется:

int select_object = 0;

if( select_object )  //condition returns an int
{

     printf("Hello");

}

если условие возвращает целое, а не логическое значение, будет ли напечатан привет? Когда я проверял это, он напечатал привет.

Любая идея, почему даже для int он выполняет оператор print.

1008 * БЛАГОДАРЯ *

Ответы [ 3 ]

6 голосов
/ 21 июля 2010

В C и C ++ любое ненулевое целое число или указатель считается истинным. Итак, поскольку select_object равен 0, он не должен печатать Hello.

0 голосов
/ 21 июля 2010

логическая логика

1 = True

0 = Ложь

1 && 0 = False 0

1 && 1 = True 1

1 || 1 = Истина 1

1 || 0 = Истина 1

Таким образом, ответ для ненулевого значения считается верным, для 0 - ложным. Если ваше значение (ваше int) вернет 0, оно не будет выполнено. Если он вернет значение, отличное от 0, он выполнится.

0 голосов
/ 21 июля 2010

В C или C ++ bool - это просто причудливый способ сказать «int со специальными значениями».Каждый логический тест (если, while, for и т. Д.) Может использовать int или указатель для своего теста вместо bool, и все, что не равно 0, является вернымВ этом смысле NULL и 0 равны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...