一个函数在失败时返回 TRUE ,在成功时返回 FALSE 。
我看到一些这样的功能在这方面做到了这一点:
return return_code != 0;
或
return (return_code != 0);
在这个函数中,在每个错误情况下,它返回 TRUE - 这很好,以及在出错时应该怎么做。
但上面的代码表示什么?它是否正在尝试确保return_code为FALSE - 显式?
答案 0 :(得分:6)
我想说的是尝试从所有可能的整数值折叠到0
和1
的整数值。我假设函数返回一个整数类型;将结果作为布尔表达式进行求值会将结果强制为这两个值。
答案 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。当然,没有理由在这么简单的功能中做这样的事情。在更复杂的功能中,成功与否在许多地方都会发生变化,通常的做法就是使用这样的返回声明。