Я переглядав вихідний код 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
цим вони справді оптимізують ці твердження.