功能返回TRUE失败,返回成功。这个C代码如何处理返回码?
我看到一些这样的功能,这样做对自身的结尾:
return return_code != 0;
或
return (return_code != 0);
而在这个功能,在每个错误情况下,返回TRUE - 这是罚款以及在发生错误时应该做什么。
但是,上面的代码意味着什么?它试图确保return_code是否为FALSE - 明确吗?
功能返回TRUE失败,返回成功。这个C代码如何处理返回码?
我看到一些这样的功能,这样做对自身的结尾:
return return_code != 0;
或
return (return_code != 0);
而在这个功能,在每个错误情况下,返回TRUE - 这是罚款以及在发生错误时应该做什么。
但是,上面的代码意味着什么?它试图确保return_code是否为FALSE - 明确吗?
都取决于值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
哇,所以它确实分配?那种不对? return_code应该根据发生在函数中的事件来决定,而不是像这样明确地... – hari
在函数的某个点,return_code必须被定义并赋值给它。它不是C中的'默认'变量。 –
aaah ....我现在明白了。如果函数设计为在成功时返回FALSE,在失败时返回TRUE,则在每个失败条件下返回TRUE并退出。但是如果你到达'return(return_code!= 0);'这意味着,一切都很好,return_code为零。所以它会返回FALSE - 我们真正想要失败的。 - 但这一切对我来说似乎都没有必要。不知何故,我错过了这里的观点。 – hari
我会说是试图从所有可能的整数值折叠到0
和1
的那些。我假设函数返回一个整型;以布尔表达式评估结果强制结果仅仅是这两个值。
一个简单的例子,用一个将b和b分开的函数来说明。如果部门可以评估,否则为false
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,从而马克说它将返回false返回true。在任何其他情况下,它将返回true。当然,没有理由在这么简单的功能中做这样的事情。在更复杂的功能中,成功与否可以在许多地方改变,这是一种常用的做法,使用这种返回语句。
它通过返回0或1来指示成功或失败。从这段代码中可以看出,这并不明显,但这可能是因为return_code可能包含比成功/失败更多的信息。做!! return_code也会这样做,我认为这看起来更好。指针的作用相同,其中!!指针返回1或0,如果指针不是或者是NULL,分别。 –