我知道这很简单,但我无法理解它实际上是如何工作的下面是片段:
int test(int a, int b)
{
return (a==b);
}
如果匹配,返回语句返回1,否则为0.
a)这里究竟发生了什么?
b)因此,当我们只想比较并返回而不是使用if和else时,这是一个更好的主意吗?
答案 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,则返回:
答案 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,它更有效,对程序员(而不是人类)更具可读性。)