Napisałem poniższy kod, aby odwrócić ciąg znaków w C. Kod wydaje się działać poprawnie i dlatego jestem zdezorientowany. Czy ktoś wie, dlaczego nie ma tu błędu? Spodziewałem się tablicy poza granicami lub nieskończonej pętli w pętli for, ale wygląda na to, że pętla zrywa się, zanim osiągnie ujemne wartości.Char Array - dlaczego pętla nie jest nieskończona?
#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 -)' to, co jest logicznie poprawne. To, co miałeś, byłoby prawdą, podczas gdy 'i' jest mniejsze niż' len', co zawsze jest prawdą. –
Podpisane/niepodpisane porównanie jest nierozsądne. http://stackoverflow.com/a/5416498/489590 –
@Legend so? to nie odpowiada na jego pytanie, dlaczego działa dla niego, wszyscy wiemy, jak to się robi właściwie – Ulterior