有人可以仔细解释,为什么在这种情况下循环重复10次?
#include <iostream>
using namespace std;
int main(){
int length=-1;
char s[]="Bad or nice";//10 characters
for ( char *q = s; *q; ++q ){
cout << *q;
length++;
}
cout << "\n" << length;
return 0;
}
答案 0 :(得分:4)
字符串中的总字符数为11
,不包括\0
。当for
指向字符串*q
的最后一个字符false
时,第二个q
表达式s
变为\0
。
因此,循环重复11
次。您收到10
输出,因为您使用length
初始化了-1
。
答案 1 :(得分:2)
条件是指针(*q
)的内存位置的值。
因此,当到达NULL
字符(在字符串的末尾)时,循环终止,该字符被评估为false。