退货声明检查条件

时间:2013-01-05 02:49:11

标签: c++ return

我知道这很简单,但我无法理解它实际上是如何工作的下面是片段:

int test(int a, int b)
{
   return (a==b);
}

如果匹配,返回语句返回1,否则为0.
a)这里究竟发生了什么? b)因此,当我们只想比较并返回而不是使用if和else时,这是一个更好的主意吗?

8 个答案:

答案 0 :(得分:6)

a== b ..如果是,则评估为true,如果不是,则评估为false。它将评估的副本返回为int,魔术由等于运算符完成。

使用它是完全可以接受的。也易于阅读。

return a == b只是一种更好的说法:

 if(a==b)
    return true;  
 else
   return false; //1 or 0  as true or false depending on the language.

答案 1 :(得分:2)

你有一个布尔语句,它根据a和b的值返回true或false。这个布尔值被转换为int,因为这是函数的返回类型。

这可能是一个简单的例子,但我建议如果函数“test”真的是一个布尔值,那么它应该返回bool类型而不是整数。通常,如果您返回int,则返回:

  • -1如果< B'/ LI>
  • 0如果a == b
  • 1 if a> B'/ LI>

答案 2 :(得分:1)

基本上你在return语句中有if语句。发生的事情是,当a==b语句中的if时,它返回true,数字为1。如果它是假的,则返回0。这与此处发生的完全相同。

您的代码可以重写为更清晰的类似:

int test(int a, int b){
   if(a==b)
       return 1;
   else
       return 0;
}

至于实用性或最佳实践,我会说这取决于你,两者都做同样的事情,但你的方式稍微简洁一点。

答案 3 :(得分:1)

  

这里究竟发生了什么?

if(a == b)
    return 1;
else
    return 0;
  

因此,当我们只是想比较并返回而不是使用if和else时,这是一个更好的主意吗?

他们是等同的。没有人比另一个好。这只是编码风格/更好看。

答案 4 :(得分:0)

a和b之间的“==”充当运算符,检查a是否等于b。如果它们是,则返回true(或作为int,1),如果不是,则返回false(0)。

据我所知,这看起来比等效的if语句更整洁,但我不确定它是好还是坏(待编译器优化)

答案 5 :(得分:0)

a == b是一个返回true的表达式,这是一个bool类型,因为返回类型是int,在调用结束之前,求值将被隐式转换为int。

答案 6 :(得分:0)

表达式(a == b)的类型为bool,可以隐式转换为int:false转换为0,true转换为1.所以基本上它等同于“if(a == b)返回1;否则返回0;“,更紧凑。抱歉格式不正确,我从手机输入

答案 7 :(得分:0)

if语句与单个布尔表达式不同。与if语句一样,编译器将生成可能损害分支预测的JUMP指令,从而可能妨碍程序性能。

在a == b表达式中,聪明的编译器可能会生成xor指令而不是使用JUMP,它更有效,对程序员(而不是人类)更具可读性。)