Ho scritto il seguente codice per invertire una stringa in C. Il codice sembra funzionare correttamente ed è per questo che sono confuso. Qualcuno sa perché non c'è un errore qui? Mi aspettavo un array fuori limite o un ciclo infinito sul ciclo for, ma sembra che il ciclo si interrompa prima di arrivare a valori negativi.Char Array - Perché il ciclo non è infinito?
#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 -)' è ciò che è logicamente corretto. Quello che hai, sarebbe vero mentre 'i' è inferiore a' len', che è sempre vero. Il confronto firmato/non firmato –
non è consigliabile. http://stackoverflow.com/a/5416498/489590 –
@Legend quindi? questo non risponde alla sua domanda, perché funziona per lui, sappiamo tutti come è fatto correttamente – Ulterior