我寫了下面的代碼來顛倒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