什么(int i = 0; a [i]; i ++)是什么意思?

时间:2017-04-25 15:54:55

标签: c++ for-loop

我有string a。 for循环a[i]中的条件for(int i = 0; a[i]; i++)是什么意思?

4 个答案:

答案 0 :(得分:2)

变量i初始化为0,然后递增直到a[i]为(或转换为)false,即a[i]==0。因此,i遍历字符串中的所有字符,直到第一次出现\0。对于通常的以null结尾的字符串,这相当于

for(auto c:a)

答案 1 :(得分:2)

for(int i = 0; a[i]; i++)for(int i = 0; a[i] != 0; i++)具有相同的含义,这意味着"进入循环,直到元素a[i]获得0;如果a是一个字符串,则表示"进入循环,直到a[i]指向字符串终止字符\0

但请注意,C ++提供了迭代字符串字符的其他方法,例如for (auto c : a) { cout << c << endl; }

答案 2 :(得分:1)

在这种情况下“for(int i = 0; a [i]; i ++)”,你的循环保持执行,直到其中一个元素为空元素。总是当你看到这个表达式时,它总是与检查元素是否为null的含义相同,以便停止循环。

然而,该循环具有未定义的行为,因为如果索引i将达到最大数组的大小。您可能会收到该类型的运行时错误:

超出范围数组大小或尝试访问内存空值空间时出错。

我希望我的回答,它适合你的问题..

答案 3 :(得分:-2)

逐个搜索字符串指针数组的字符。但是,因为它在代码中定义为字符串,所以会发生编译时错误。