main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
for 循环中的 s[i] 是什么意思?
main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
for 循环中的 s[i] 是什么意思?
一旦i
达到3,s[i]
将\0
因此结束循环。
请记住,这char s[]="man";
会产生以下数组:
char s[] = {'m', 'a', 'n', '\0'};
这就是为什么s[3]
评估为'\0'
导致控制语句终止循环的原因
这是 foo 循环的谓词,并自动转换为布尔值。就像写作一样s[i] != '\0'
。C 字符串以零结尾。
循环继续直到s[i]
计算为非零值。由于 C 字符串以空(=零)终止,因此for
循环将增加i
,直到s
检查完所有字符串。
好吧,在任何 for 循环中,中间语句是循环的条件,而循环将继续循环自身。与您的陈述相反(例如)将for(i=0;!s[ i ];i++)
意味着循环只会在s[i]
错误时重复自身。另一个例子:
for(i = 0; i <= 10; i++);
只要i
小于或等于 10,此循环就会不断重复,从而使计数到 10 并在每次 i 递增时执行一个动作变得很简单。
这是for循环的条件。
在 C 中,任何不同于 NULL,'\0',0 的值都被评估为真。因此,只要 s[i] 不采用 '\0' ,它就会被评估为真。