Theo cách nghĩ của tôi, một vòng lặp for được sử dụng để lặp lại trong một phạm vi đã biết hoặc có thể xác định.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
tương đương (phạm vi của tôi sang một bên) với:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
Nói cách khác, for
vòng lặp chỉ đơn giản là một đường cú pháp (rất hữu ích) cho một cấu trúc thường được sử dụng while
.
Tuy nhiên, tôi thấy rất nhiều for(;;)
cấu trúc trên web có chức năng tương đương vớiwhile(true)
Lý do cho điều này là gì? Tại sao vòng lặp vô hạn sẽ được ưa thích hơn vòng lặp vô hạn?
// Tôi thậm chí đã thấy một cuốn sách giáo khoa java không sử dụng trong khi các vòng lặp! Dẫn đến các cấu trúc quái dị như:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
và for
ở đây và câu hỏi sẽ không thay đổi. while(true)
và for(;;)
có nghĩa là điều tương tự. Bạn rõ ràng có một ưu tiên mạnh mẽ cho while
, những người khác có thể có một ưu tiên mạnh mẽ như nhau cho for
. Không thể nói rằng cái này đúng hơn cái kia.
for(;;)
khó hiểu chút nào. Đó là một thành ngữ C tiêu chuẩn, một thành ngữ mà bạn sẽ ghi lại trong phần 3.5 của K & R (2e). Tôi hiểu rằng bạn không thích nó; bạn nên hiểu rằng những người khác rõ ràng thích nó (nếu không bạn sẽ không bao giờ nhìn thấy nó). Nó có thể ít nhiều được chấp nhận trong các ngôn ngữ khác ngoài C; bạn đã gắn thẻ ngôn ngữ bất khả tri này chỉ làm giảm khả năng trả lời dứt khoát. Một lần nữa, tôi đã bỏ phiếu để đóng vì Q không mang tính xây dựng; nếu tôi bị xúc phạm tôi sẽ bị gắn cờ là tấn công thay vì hoặc ngoài việc đóng cửa. Đó là tất cả.
wheeeeeeee { ... }