Stavo guardando il codice sorgente di nmap che è stato rilasciato nel 1997 e ho notato questa sezione di codice che mi sembra un po 'strana:
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';
Perché dovresti averlo i++;
e poi i--;
uno dopo l'altro? i
è 0
, quindi i++
si trasforma i
in 1
. Dopodiché, i--
si trasforma i
in 0
.
Link al codice sorgente originale. Cercare:
i++;
i--;
Qualcuno può spiegare a cosa serve?
-O
esso ottimizza davvero quelle affermazioni.