Hãy nhìn vào những cách độc lập:
while(cin >> x) {
// code
}
Vòng lặp này, bằng trực giác, có nghĩa là "giữ giá trị đọc từ cin
vào x
, và miễn là một giá trị có thể được đọc, tiếp tục vòng lặp." Ngay khi giá trị được đọc không phải là int
hoặc ngay sau khi cin
bị đóng, vòng lặp kết thúc. Điều này có nghĩa là vòng lặp sẽ chỉ thực hiện trong khi x
hợp lệ.
Mặt khác, hãy xem xét vòng lặp này:
while(cin){
cin >> y;
//code
}
Tuyên bố while (cin)
có nghĩa là "trong khi tất cả các hoạt động trước đó trên cin
đã thành công, tiếp tục vòng lặp." Khi chúng tôi nhập vòng lặp, chúng tôi sẽ cố đọc giá trị vào y
. Điều này có thể thành công, hoặc nó có thể thất bại. Tuy nhiên, bất kể trường hợp nào xảy ra, vòng lặp sẽ tiếp tục thực thi. Điều này có nghĩa là khi dữ liệu không hợp lệ được nhập vào hoặc không có dữ liệu nào để đọc, vòng lặp sẽ thực thi thêm một lần nữa bằng giá trị cũ của y
, vì vậy bạn sẽ có thêm một vòng lặp lặp lại cần thiết.
Bạn chắc chắn nên thích phiên bản đầu tiên của vòng lặp này đến vòng lặp thứ hai. Nó không bao giờ thực hiện lặp lại trừ khi có dữ liệu hợp lệ.
Hy vọng điều này sẽ hữu ích!
"và miễn là một giá trị có thể được đọc, tiếp tục lặp" tức là nếu đọc thành công, hãy thực hiện phần thân vòng lặp. – dyp