Tôi đã xem mã nguồn cho nmap được phát hành năm 1997 và tôi nhận thấy phần mã này có vẻ hơi kỳ lạ đối với tôi:
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';
Tại sao bạn lại có i++;
và sau đó i--;
ngay sau nhau? i
là 0
, sau đó i++
chuyển i
sang 1
. Sau đó,i--
quay i
sang 0
.
Liên kết với mã nguồn gốc.Tìm kiếm:
i++;
i--;
Bất cứ ai có thể giải thích điều này là gì?
-O
nó thực sự tối ưu hóa các tuyên bố đó.