如果(s.length())说如果它返回一个值,继续吗



通常,我看到的代码是if(s.length() > 1) ...,但这里只有if(s.length())

length功能的实现方式如下所述。当在包含int main()的文件中的test3函数调用中使用时,if(s.length)是否表示如果它返回的计数大于零,则它将执行该if语句的主体?

int statistician::length() const
{
return count;
}

代码(int main()中的test3()调用(:

statistician s, t, u, v;
if (s.length( ) || t.length( )) return 0; // <-- HERE
if (s.sum( ) || t.sum( )) return 0;
t.next(5);
u.next(0); u.next(10); u.next(10); u.next(20);
v = s + s;
if (v.length( ) || v.sum( )) return 0;
v = s + u;
if (!(u == v)) return 0;
v = t + s;

c++中,int可以隐式转换为布尔。规则是:

int (0) -> false
int (anything else) -> true

在您的情况下,如果存在,长度将返回一些正数,如果不存在,则返回0,因此此逻辑为:

if (s.length())

相当于

if (s.length() >= 1)
^ // Very important, you probably missed this, but you probably
// want to know if the string is greater than 0, not "2 or more"

对于您可能已经实现它的方式。然而int也可以是负值,负值仍然不是0,因此也将是true。如果你的功能是这样的:

int length() {
if (some condition) {
return -1; // error code
}
return count;
}

那么你的if语句突然变得不等价了。所以如果不是这样的话,最好的办法就是按照你的意愿来表示你的数据。也就是说,如果你的计数值不能为负,那么就不要允许它为负。使用unsigned intsize_t:

size_t length();

相关内容

最新更新