当这个 for 循环的条件将变为假

When is the condition of this for loop will becomes false?

本文关键字:条件 for 循环      更新时间:2023-10-16

我正在研究我的C++练习题,为即将到来的考试做准备,我正在努力解决我以前从未见过的循环条件。

        for (int i = 0; s[i]; i++)

从主服务器发送的字符串s "Two roofs to fix"

问题是 for 循环的条件什么时候会变成假?

当字符串的终止零''被击中时,循环条件变为 false。(if (0)计算结果为假)

请注意:如果字符串未以 null 结尾,则这种形式的测试可能会发生错误。

只是为了澄清@MitchWheat的答案,如果用作条件的表达式仅指定一个值,例如if (x),那么它本质上等同于if (x != 0)。如果该值是指针类型,则它等效于if (x != NULL)(尽管这不是真正的"相反",因为 NULL == 0)。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s = "Two roofs to fix";
    int i;
    for (i = 0; s[i]; i++);
    cout<<"i = "<<i<<endl;
}

我用上面的代码测试了这个问题。它返回错误"字符串下标超出范围"。因此,如果字符串 s 的长度是 Len,则 s[Len] 是非法的。在您的代码中,s 不是指针 char*,而是一个字符串。所以这样编码是不合适的。