Быстрый вопрос по If (! X ()), где x () - функция - PullRequest
0 голосов
/ 20 февраля 2011

Ребята, я не совсем уверен, что здесь происходит для оператора if.Я сделал кучу поисков Google, но ничего не приходит.Очевидно, что функция x () что-то возвращает.Либо 1, либо 0. Но я не уверен, что он делает.Это сокращение от x () == 0 или x () == 1. Я просто перебираю примеры кодирования и заметил это.

Ответы [ 5 ]

3 голосов
/ 20 февраля 2011
if(!x())
{
   // executes if x() is 0
   // x() == 0
}

if(x())
{
   // executes if x() is non-0
   // x() != 0
}
1 голос
/ 20 февраля 2011

Это короткая рука для if(x()==0){ // stuff }

Обратите внимание, что x() не должен возвращать только «0» или «1».В C любое ненулевое значение считается ИСТИННЫМ в условном выражении, а отрицание любого ненулевого значения - НОЛЬ.

0 голосов
/ 20 февраля 2011

В C 0 считается ложным, а все остальные числа считаются истинными. В вашем выражении if вы говорите «если x() не верно», что эквивалентно «если x() является ложью». Следовательно, if(!x()) - это то же самое, что и if(x()==0).

0 голосов
/ 20 февраля 2011

Это значит x() == 0. А if (x()) означает if (x()!=0)

0 голосов
/ 20 февраля 2011

if(!x()) просто проверяет, возвращает ли x() что-то, что оценивается как ложное, другими словами if(x() == false) или if(x() == 0) - это то же самое.

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