Patrzyłem na kod źródłowy nmap wydany w 1997 roku i zauważyłem ten fragment kodu, który wygląda mi trochę dziwnie:
int i=0, j=0,start,end;
char *expr = strdup(origexpr);
ports = safe_malloc(65536 * sizeof(short));
i++; /* <<<<<< */
i--; /* <<<<<< */
for(;j < exlen; j++)
if (expr[j] != ' ') expr[i++] = expr[j];
expr[i] = '\0';
Dlaczego miałbyś, i++;
a potem i--;
zaraz po sobie? i
jest 0
, a następnie i++
zmienia i
się w 1
. Potem i--
zwraca się i
do 0
.
Link do oryginalnego kodu źródłowego. Szukaj:
i++;
i--;
Czy ktoś może wyjaśnić, po co to jest?
-O
temu rzeczywiście optymalizują te instrukcje.