Trong hai đoạn mã sau, có thực sự là khác nhau tùy theo tốc độ biên dịch hay chạy không?Bạn có tiếp tục tức thì không?
for (int i = 0; i < 50; i++)
{
if (i % 3 == 0)
continue;
printf("Yay");
}
và
for (int i = 0; i < 50; i++)
{
if (i % 3 != 0)
printf("Yay");
}
Cá nhân, trong tình huống mà có nhiều hơn một tuyên bố in, tôi đã sử dụng phương pháp đầu tiên để làm giảm lượng thụt đầu dòng cho mã chứa . Đã tự hỏi trong một thời gian để tìm thấy nó về thời gian tôi hỏi liệu nó thực sự có một hiệu ứng khác hơn là trực quan.
Trả lời Alf (tôi không thể nhận được mã làm việc trong ý kiến ...)
Nhiều chính xác để sử dụng của tôi là một cái gì đó dọc theo dòng của một hàm "handleObjectMovement" trong đó sẽ bao gồm
for each object
if object position is static
continue
deal with velocity and jazz
so với
for each object
if object position is not static
deal with velocity and jazz
Do đó tôi không sử dụng trở lại. Về cơ bản "nếu nó không liên quan đến sự lặp lại này, di chuyển trên"
Tôi nghĩ xử lý các trường hợp nhỏ hoặc trường hợp lỗi đầu tiên trong hàm, sử dụng 'return' to ** bail out **, là OK. Nhưng 'tiếp tục' có nghĩa là người đọc mã phải sử dụng thêm nỗ lực để phân tích. Hãy nhớ rằng viết mã nguồn không phải là về giao tiếp với trình biên dịch những gì nó nên làm, rất nhiều như giao tiếp với người khác hoặc tự sau của bạn những gì * ý định * của bạn. –
Trình biên dịch tốt nên tối ưu hóa nguồn tương đương thành cùng một mã assembly. Cho dù điều đó thực sự xảy ra trong bất kỳ trường hợp cụ thể nào cũng phụ thuộc vào quá nhiều điều cần biết trước. Vậy tại sao bạn không tự mình kiểm tra? Kiểm tra lắp ráp được tạo ra và/hoặc đo thời gian và bạn sẽ có câu trả lời. –
Hai lý do Branko, thứ hai là xấu, nhưng thứ hai tôi cảm thấy khá tốt: P 1) Tôi lười biếng 2) Sẽ rất hữu ích nếu bạn có những câu hỏi này chỉ cần một google. Bây giờ bất cứ ai khác tự hỏi họ có cùng một trang SO họ có thể đi đến. – Randomman159