Tại sao điều này không hợp lệNhiều Counter Vấn đề Trong vòng lặp for
for(int i = 0, int x = 0; some condition; ++i, ++x)
và đây là
int i, x;
for(i = 0, x = 0; some condition; ++i, ++x)
Cảm ơn
Tại sao điều này không hợp lệNhiều Counter Vấn đề Trong vòng lặp for
for(int i = 0, int x = 0; some condition; ++i, ++x)
và đây là
int i, x;
for(i = 0, x = 0; some condition; ++i, ++x)
Cảm ơn
phiên bản đúng là
for (int i = 0, x = 0; some condition; ++i, ++x)
công trình này:
for(int i = 0, x = 0; some condition; ++i, ++x)
nó giống như một khai báo biến:
int i, j; // correct
int i, int j; // wrong, must not repeat type
Trong thực tế, nó _is_ một tuyên bố biến. Để được chính xác, cả hai đều là 'đơn giản-declaration' s – MSalters
Bởi vì một khai báo biến (như int x
) không phải là một biểu hiện và các nhà điều hành dấu phẩy (,
) chỉ kết hợp biểu thức.
này cho thấy một hạn chế buồn của vòng lặp for khối khởi động. tức là tất cả các biến được khởi tạo trong khối khởi tạo phải cùng loại. –
Hầu như:!. 'For (int x, y *; ... ' – MSalters
Cẩn thận,', 'trong việc kê khai' int x, y;' là KHÔNG toán tử phẩy – fredoverflow
Tại sao nó hợp lệ? Đó là một construst cú pháp vô nghĩa. Bạn đang cố nói gì với nó?
Phần đầu tiên của tiêu đề for
là tuyên bố.
int i = 0, int x = 0
không phải là khai báo hợp lệ. Nó sẽ không biên dịch trong for
với cùng lý do tại sao nó sẽ không biên dịch bất cứ nơi nào khác trong chương trình
int i = 0, int x = 0; // Syntax error
Khi bạn cần khai báo hai đối tượng thuộc loại int
trong một tuyên bố, bạn làm điều đó như sau
int i = 0, x = 0; // OK
điều tương tự có thể được sử dụng trong for
for(int i = 0, x = 0; some condition; ++i, ++x)
(Nhưng khi bạn cần phải khai báo hai biến của khác nhau loại, nó không thể được thực hiện bởi một tuyên bố và, do đó, cả hai không thể được tuyên bố trong for
cùng một lúc. Ít nhất một trong số họ sẽ phải được khai báo trước khi for
)
này là hợp pháp.
for(int i = 0, x = 0; condition; ++i, ++x);
int x, int y không phải là một cách hợp pháp của khai báo biến;
khi bạn cần phải khai báo hai biến của các loại khác nhau, nó không thể được thực hiện bằng một tuyên bố
Hackety Hack hack:
for (struct {int i; char c;} loop = {0, 'a'}; loop.i < 26; ++loop.i, ++loop.c)
{
std::cout << loop.c << '\n';
}
;-)
Wow Chưa bao giờ nghe nói về điều này trước khi – sharptooth
+ 1 cho "Hackety Hack hack". –
điều đó có vẻ giống như một hack tốt đẹp. bạn có nhận xét về một số chi tiết lạ? Nếu tôi thay thế loại i biến với một cái gì đó giống như std :: vector
Tôi đã thực hiện phương pháp này để tính toán sự khác biệt chéo. Ở đây tôi tính toán số tiền của Antidiagonal.
for(int i=0,j=n-1; i<n,j>=0;i++,j--){
sum_right += a[i][j];
}
có thể trùng lặp của [Tôi có thể khai báo các biến của các loại khác nhau trong quá trình khởi tạo vòng lặp for?] (Http://stackoverflow.com/questions/8644707/can-i-declare-variables-of-different -types-in-the-khởi-of-a-cho-loop) –
@Mechanicalsnail: các bị cáo buộc trùng lặp là mới hơn so với câu hỏi này. Tại sao bạn đóng này? – bitmask
@bitmask: Một câu hỏi khác có một chút giải thích thêm về những gì chúng tôi đang cố gắng để làm, và có câu trả lời upvoted hơn. Nhưng để đóng là một cuộc gọi phán xét. –