私は以下のコードを書いてCの文字列を逆にしています。コードが正しく動作しているように見えます。そのため、私は混乱しています。誰もがここにエラーがない理由を知っていますか?私は、範囲外の配列または無限ループのforループを期待していましたが、ループが負の値になる前にブレークしているようです。文字配列 - forループが無限でないのはなぜですか?
#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;
}
を '生成'論理的に正しいだものです。あなたが持っていたことは、「i」が「len」よりも小さい間は真実であり、常に真です。 –
符号付き/符号なし比較は賢明ではありません。 http://stackoverflow.com/a/5416498/489590 –
@Legend so?それは彼の質問に答えない、なぜ彼が働いているのか、私たちは皆それが正しく行われていることを知っている。 – Ulterior