Я искал исходный код для nmap, который был выпущен в 1997 году, и заметил этот фрагмент кода, который выглядит немного странным для меня:
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';
Зачем тебе i++;
и то i--;
сразу после друг друга? i
есть 0
, то i++
превращается i
в 1
. После этого i--
превращается i
в 0
.
Ссылка на оригинальный исходный код. Ищи:
i++;
i--;
Кто-нибудь может объяснить, для чего это?
-O
этим действительно оптимизируются эти операторы.