这个C代码对返回代码做了什么?

时间:2011-11-03 18:50:37

标签: c error-handling return-value

一个函数在失败时返回 TRUE ,在成功时返回 FALSE

我看到一些这样的功能在这方面做到了这一点:

return return_code != 0;

return (return_code != 0);

在这个函数中,在每个错误情况下,它返回 TRUE - 这很好,以及在出错时应该怎么做。

但上面的代码表示什么?它是否正在尝试确保ret​​urn_code为FALSE - 显式?

4 个答案:

答案 0 :(得分:6)

我想说的是尝试从所有可能的整数值折叠到01的整数值。我假设函数返回一个整数类型;将结果作为布尔表达式进行求值会将结果强制为这两个值。

答案 1 :(得分:2)

两者都取决于return_code的值:

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

答案 2 :(得分:1)

进一步解释 -

很可能是程序TRUE和FALSE中的某个地方被定义:

#define TRUE  1
#define FALSE 0

当计算布尔表达式时,结果始终为1或0,如果布尔表达式的计算结果为true,则为1;如果为false,则结果为0。这就是为什么你可以测试一个布尔表达式的计算结果为TRUE或FALSE的原因。如果您只是对布尔表达式感到好奇并想要更多基本信息,那么这是一个不错的tutorial

答案 3 :(得分:1)

一个简单的例子,用一个用b除以a的函数来表明它。如果可以评估除法,则返回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时,return_code才为0,因此Marc回复它将返回false。在任何其他情况下,它将返回true。当然,没有理由在这么简单的功能中做这样的事情。在更复杂的功能中,成功与否在许多地方都会发生变化,通常的做法就是使用这样的返回声明。