当这个 for 循环的条件将变为假
When is the condition of this for loop will becomes false?
我正在研究我的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*,而是一个字符串。所以这样编码是不合适的。
相关文章:
- 如何在for循环中包含两个索引值的测试条件
- 为什么我不能在 for 循环中出现这样的条件?(C++)
- for循环的条件只有在遇到断点后才生效
- 迭代器 for 循环不会确认循环完成条件
- C++代码在 for 循环的条件下给出运行时错误,而如果它被具有相同意义的代码替换,则编译正确
- for 循环条件
- 具有不同条件的多个 for 循环
- 如果条件太长,包括 for 循环
- 是否可以在 for 循环条件括号内使用三个分号?
- for 循环中的条件未执行
- 如果任何条件是错误的,如何从for循环中返回false
- 如何在C 中动态更新for循环的条件
- 在 c++ 中,c 为什么 for 循环块内部和 for 循环内的条件行为不同?
- for 循环中超过 2 个条件
- 为什么 for 循环的条件是可选的,而 while 循环不是?
- for 循环中没有条件?
- 编译器是否优化了语句"for"第二个条件?
- 是否有更简单的方法来定义C 中的for循环中的条件
- 如何编写条件 for 循环(如果 true 循环通过 A,否则循环通过 B)
- 循环中忽略"if"条件"for"