0
 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] 是什么意思?

4

5 回答 5

3

一旦i达到3,s[i]\0因此结束循环。

请记住,这char s[]="man";会产生以下数组:

char s[] = {'m', 'a', 'n', '\0'};

这就是为什么s[3]评估为'\0'导致控制语句终止循环的原因

于 2012-08-21T23:13:36.683 回答
0

这是 foo 循环的谓词,并自动转换为布尔值。就像写作一样s[i] != '\0'。C 字符串以零结尾。

于 2012-08-21T23:14:45.840 回答
0

循环继续直到s[i]计算为非零值。由于 C 字符串以空(=零)终止,因此for循环将增加i,直到s检查完所有字符串。

于 2012-08-21T23:14:54.777 回答
0

好吧,在任何 for 循环中,中间语句是循环的条件,而循环将继续循环自身。与您的陈述相反(例如)将for(i=0;!s[ i ];i++)意味着循环只会在s[i]错误时重复自身。另一个例子:

for(i = 0; i <= 10; i++); 只要i小于或等于 10,此循环就会不断重复,从而使计数到 10 并在每次 i 递增时执行一个动作变得很简单。

于 2012-08-21T23:21:13.910 回答
0

这是for循环的条件。

在 C 中,任何不同于 NULL,'\0',0 的值都被评估为真。因此,只要 s[i] 不采用 '\0' ,它就会被评估为真。

于 2012-08-21T23:15:19.423 回答