Tuyên bố miễn trừ trách nhiệm : Tôi biết rất rõ ngữ nghĩa của việc tăng tiền tố và hậu tố. Vì vậy xin đừng giải thích cho tôi cách họ làm việc.
Đọc các câu hỏi về stack stack, tôi không thể không nhận thấy rằng các lập trình viên bị nhầm lẫn bởi toán tử gia tăng postfix nhiều lần. Từ đây, câu hỏi sau đây được đặt ra: có trường hợp sử dụng nào trong đó việc tăng tiền tố cung cấp một lợi ích thực sự về chất lượng mã không?
Hãy để tôi làm rõ câu hỏi của tôi với một ví dụ. Đây là một triển khai siêu ngắn gọn của strcpy
:
while (*dst++ = *src++);
Nhưng đó không chính xác là mã tự viết tài liệu nhất trong cuốn sách của tôi (và nó tạo ra hai cảnh báo khó chịu trên trình biên dịch lành mạnh). Vì vậy, những gì sai với sự thay thế sau đây?
while (*dst = *src)
{
++src;
++dst;
}
Sau đó chúng ta có thể thoát khỏi nhiệm vụ khó hiểu trong điều kiện và nhận được mã hoàn toàn không có cảnh báo:
while (*src != '\0')
{
*dst = *src;
++src;
++dst;
}
*dst = '\0';
(Có, tôi biết src
và dst
sẽ có các giá trị kết thúc khác nhau trong các giải pháp thay thế này, nhưng vì strcpy
ngay lập tức trả về sau vòng lặp, nên trong trường hợp này không thành vấn đề.)
Có vẻ như mục đích của việc tăng tiền tố là làm cho mã càng ngắn càng tốt. Tôi chỉ đơn giản là không thấy làm thế nào đây là một cái gì đó chúng ta nên cố gắng. Nếu điều này ban đầu là về hiệu suất, nó vẫn còn liên quan đến ngày hôm nay?
int c = 0; c++;
strcpy
phương pháp theo cách này (vì những lý do bạn đã đề cập).