Tôi có câu hỏi này sau khi đọc thread Print an int in binary representation using CHiểu được điều kiện xuất cảnh của một vòng lặp for
này Trong một người dùng bình luận, họ đăng tải này cho vòng lặp, mà gán 1 hoặc một từ 0 đến vị trí bit để chuyển đổi từ một số thập phân int sang char * binary.
for(; bits--; u >>= 1)
str[bits] = u & 1 ? '1' : '0';
Tôi hiểu tại sao không cần phải là giá trị được khởi tạo. Đây là cú pháp cho vòng lặp for mà tôi đã luôn biết:
for (variable initialization; condition; variable update)
Điều tôi không hiểu là cách 'bit--' có thể là điều kiện thoát. Xin hãy giúp tôi hiểu cách mã này hoạt động (tôi đã thử nghiệm nó, và nó hợp lệ).
Cảm ơn bạn.
Đây là những gì các lập trình viên C bị nguyền rủa !! Sản xuất mã làm điều gì đó nhưng không ai hiểu nó nữa. Đừng cố viết mã như thế !! bit - decrements biến bit, khi nó bằng 0, nó trả về false – guitarflow
@guitarflow Những người hiểu C và thành ngữ của nó hiểu mã như vậy là tốt vì điều này rất phổ biến trong mã C (bao gồm cả sách K & R), và tôi sẽ nói rằng thành ngữ này phải được học để hiểu mã C nói chung. Vậy tại sao mã mới (bằng bất kỳ ngôn ngữ nào) được viết cho những người làm _không hiểu ngôn ngữ? Hình thức “dễ hiểu hơn” thậm chí có thể làm phức tạp mọi thứ cho người đọc thành thạo ngôn ngữ, tức là “tại sao anh ấy không dùng [thành ngữ phổ biến], có cái gì tôi đang thiếu?” – Arkku
@Arkku Tôi cũng hiểu mã , nhưng bạn phải đồng ý nó không phải là phong cách mã hóa tốt. Viết for-loop theo cách "chuẩn" giúp mọi người dễ đọc hơn, không chỉ là các vết nứt. Tên biến như "u" cũng không phải là tên mô tả;) – guitarflow