我正在研究我的C ++练习题,为即将到来的测试做准备,我正在努力解决以前从未见过的for循环问题。
for (int i = 0; s[i]; i++)
从主要发送的字符串s
是"Two roofs to fix"
问题是for循环的条件何时会变为假?
答案 0 :(得分:5)
当字符串终止为零'\0'
时,循环条件变为false。 (if (0)
评估为假)
请注意:如果字符串未终止,则此形式的测试可能会发生错误。
答案 1 :(得分:2)
为了澄清@ MitchWheat的答案,如果用作条件的表达式仅指定一个值,如if (x)
,则它基本上等同于if (x != 0)
。如果值是一个指针类型,那么它相当于if (x != NULL)
(虽然那不是真正的“反而”,因为NULL == 0)。
答案 2 :(得分:1)
#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 *,而是字符串。所以这样的代码是不合适的。