Trong tuyên bố nàyWhats thuật ngữ cuối cùng làm gì?
for (i = 1; i <= n; i++) {
cout << i << " \n"[ i == n ];
}
thuật ngữ cuối cùng trong cout
tuyên bố [i==n]
làm là gì? Vòng lặp này in số không gian riêng biệt mà tôi đoán.
Trong tuyên bố nàyWhats thuật ngữ cuối cùng làm gì?
for (i = 1; i <= n; i++) {
cout << i << " \n"[ i == n ];
}
thuật ngữ cuối cùng trong cout
tuyên bố [i==n]
làm là gì? Vòng lặp này in số không gian riêng biệt mà tôi đoán.
Đó là cách ngớ ngẩn để lập chỉ mục hoặc là ký tự ' '
hoặc ký tự '\n'
. Đây không ý tưởng và in cùng "Hello World":
#include <iostream>
int main() {
for (int i = 0; i < 11; i++)
std::cout << "Hello World"[i];
return 0;
}
i == n
được hoặc sẽ true
hoặc false
. Khi truyền tới một số nguyên để lập chỉ mục bằng cách sử dụng [i == n]
, bạn sẽ nhận được phần tử đầu tiên hoặc thứ hai
Sử dụng đúng cách vòng loại ngớ ngẩn (Nó phải được chuẩn hóa)! – Oliv
Tuyệt vời! Chỉ có, tôi sẽ trao đổi các đối số thành '[]' để có chất lượng bổ sung. 'i [" Hello World "]'. ;-) –
Nó là một cách u mê viết:
(i == n ? '\n' : ' ')
Đó là, khi i == n
, một dòng mới được in, nếu không một không gian được in ra.
Ý tưởng là tách các số theo khoảng trắng và đặt một dòng mới sau khi tất cả các số đã được in.
Không bao giờ thấy điều này trước đây! – CinCout
Có thể trùng lặp [Làm cách nào để nhận ký tự thứ n của chuỗi?] (Https://stackoverflow.com/questions/8454228/how -can-i-get-the-nth-ký tự-of-a-string) –
@underscore_d: Chắc chắn là không. Lưu ý biểu thức bất thường trong '[i == n]'. – MSalters
và thông qua đánh giá boolean tiêu chuẩn, 'i == n' trở thành' 0' hoặc '1'. Vì vậy, một khi ai đó biết những gì '" foo "[bar]' hiện, '" foo "[i == n]' có vẻ tầm thường với tôi. –