что этот код C делает с кодом возврата? - PullRequest
3 голосов
/ 03 ноября 2011

Функция возвращает TRUE в случае ошибки и FALSE в случае успеха.

Я вижу, что некоторые такие функции делают это в конце самого себя:

return return_code != 0;

или

return (return_code != 0);

И в этой функции при каждом случае ошибки она возвращает TRUE - что нормально, и что она должна делать в случае ошибки.

Но что означает приведенный выше код? Это пытается удостовериться, что return_code является ЛОЖНЫМ - явно?

Ответы [ 4 ]

6 голосов
/ 03 ноября 2011

Я бы сказал, что пытается свернуть все возможные целочисленные значения до значений 0 и 1.Я предполагаю, что функция возвращает целочисленный тип;оценка результата как логического выражения заставляет результат получить только эти два значения.

2 голосов
/ 03 ноября 2011

Оба зависят от значения кода возврата:

return_code = 0;

return(return_code != 0); // returns false
return(return_code == 0); // returns true

и

return_code = "anything but a zero";

return(return_code != 0); // returns true
return(return_code == 0); // returns false
1 голос
/ 03 ноября 2011

Простой пример, чтобы прояснить ситуацию, с функцией, которая делит a на b.Возвращает true, если деление может быть оценено как ложное в противном случае

bool div(double a, double b, double& r)
{
   int return_code = 1;
   if (b == 0) // cannot divide
      return_code = 0;
   else
      r = a/b;

   return (return_code != 0);
}

В этом простом примере, только если b == 0, код возврата будет равен 0, поэтому Марк ответил, что он вернет false.В любом другом случае он вернет истину.Конечно, нет причин делать что-то подобное в такой простой функции.В более сложных функциях, где успех или не может измениться во многих местах, является обычной практикой использовать такие операторы возврата.

1 голос
/ 03 ноября 2011

Просто дальнейшее объяснение -

Скорее всего, где-то в программе определены ИСТИНА и ЛОЖЬ:

#define TRUE  1
#define FALSE 0

Когда вычисляется логическое выражение, результат всегда равенили 0, 1, если логическое выражение имеет значение true, и 0, если оно равно false.Вот почему вы можете проверить, имеет ли логическое выражение значение ИСТИНА или ЛОЖЬ.Если вам просто интересны логические выражения и вы хотите получить более простую информацию, вот неплохой учебник .

...