【发布时间】:2016-05-26 01:53:43
【问题描述】:
我想知道我所看到的涉及代码的部分是否有任何意义
return (num!=0);
其中 num 是一个 int。这是一个布尔函数的 return 语句,如果 num != 0 则返回 TRUE,如果 num = 0 则返回 false。
我不确定这是否有隐藏的意义,但我不明白为什么他们不能简单地写:
return num;
这是我看到的代码:
bool SemClass::cut(int &a, int &b, int &c)
{
int num = 0;
check(a, num);
check(b, num );
check(c, num);
return (num != 0);
}
【问题讨论】:
-
我怀疑这个人不知道 int 会收敛到一个布尔值,其中 num!=0 为真,否则为假。
-
是的,很抱歉这是 C++。
-
返回 bool 而不是 int 是语言特定的行为,这在代码的可读性和可移植性方面存在一些严重差异。
-
在这种情况下,在 C++ 中,编写
num和num!=0都可以。但是,num!=0可能更明显地表明该方法正在返回一个布尔值。从技术上讲,只有整数值0将等同于布尔值false,而所有其他值将等同于布尔值true。通过编写num!=0,明确表示如果num不等于0,则该方法将返回true,如果是,则返回false。隐式转换:en.cppreference.com/w/cpp/language/implicit_cast -
一些编译器会在“return num”上给出“缩小”警告。在那里进行额外的测试会将返回类型从 int 更改为 bool,从而消除警告。
标签: c++ return boolean implicit-conversion