我写了下面的代码来颠倒C中的一个字符串。代码似乎正常工作,这就是为什么我很困惑。有谁知道为什么这里没有错误?我期待在for循环中出现一个数组越界或无限循环,但似乎循环在它变为负值之前就会中断。Char数组 - 为什么循环不是无限的?
#include <stdio.h>
#include <string.h>
void reverse(char* str);
void reverse(char* str)
{
size_t len = strlen(str);
for(int i = (int)len-1; i<=len; i--)
{
printf("%c", str[i]);
}
}
int main (int argc, const char * argv[])
{
char string[] = {'h', 'e', 'l', 'l', 'o', '\0'};
reverse(string);
return 0;
}
'的for(int i =(int)的LEN-1; i> = 0; I - )'是什么逻辑正确。你所拥有的将是真实的,而'i'小于'len',这总是正确的。 – 2013-06-12 03:43:30
签名/无符号比较是不明智的。 http://stackoverflow.com/a/5416498/489590 –
@Legend so?那不回答他的问题,为什么它为他工作,我们都知道它是如何正确完成的 – Ulterior