cuốn sách gpt4 ai đã làm

c++ - 'for' thứ ba trong #define for(int z=0;z<2;++z)for(int z=0;z<2;++z)for có nghĩa là gì?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:04:01 28 4
mua khóa gpt4 Nike

Tôi tìm thấy một đoạn mã trong chương trình C++ có vẻ nhưvì()Chu kỳ hai lần. Chương trình này lặp lại, nhưng tại sao cái thứ ba lại cần thiết trong định nghĩa tiền xử lý như vậy?

#define for for(int z=0;z<2;++z)for

câu trả lời hay nhất

nó thay thế forfor(int z=0;z<2;++z)for .Rõ ràng là điều đó sẽ trở thành

vì (int i = 0; i < N; ++i) {
// ...
}

进入

for (int z=0;z<2;++z) for (int i = 0; i < N; ++i) {
// ...
}

Do đó hai vòng lặp lồng nhau được tạo ra. không có thêm thứ đó forsẽ được

for (int z=0;z<2;++z) (int i = 0; i < N; ++i) {
// ...
}

Điều này rõ ràng là không chính xác.

Xin lưu ý rằng ngay cả khi biểu mẫu bạn cung cấp trong câu hỏi của mình là "chính xác", điều này không có nghĩa đó là "cách thực hành tốt". Đây là một ví dụ về việc lạm dụng macro,必须tránh xa. Đây là một trong nhiều ví dụ về việc nó có thể sai như thế nào:

vì (int z = 0; z < 5; ++z) {
vì (int i = 0; i < 3; ++i) {
std::cout << z << std::endl; // điều này sẽ không bao giờ in 2, 3, 4
}
}

Điều này sẽ mở rộng đến

cho (int z=0;z<2;++z) cho (int z = 0; z < 5; ++z) {
for (int z=0;z<2;++z) for (int i = 0; i < 3; ++i) {
std::cout << z << std::endl; // điều này sẽ không bao giờ in 2, 3, 4
}
}

có nghĩa là bây giờ bạn cóbốn Các vòng lặp lồng nhau và vòng lặp bên trong sẽ in "vô hình"z. thay vì zBạn đã khai báo nó ở vòng lặp bên ngoài (nó trở thành vòng lặp phụ trong mã mở rộng).

Một lý do khác: Như @stefan đã chỉ ra, sử dụng từ khóa hoặc các mã định danh nổi tiếng khác làm tên macro là một ý tưởng rất tồi. gợi nhớ đến sự khét tiếng#xác định đúng sai .Và, như @HolyBlackCat đã đề cập, đó cũng là hành vi không xác định, có nghĩa là theo tiêu chuẩn có liên quan,bất cứ điều gì Bất cứ điều gì có thể xảy ra. Từ những mật mã "dường như có tác dụng" cho đến Thế chiến thứ ba toàn diện chống lại người sao Hỏa (những kẻ xâm chiếm Trái đất để thanh lọc những mật mã xấu xí của họ).

Giới thiệu về c++ - Chữ 'for' thứ ba trong #define for(int z=0;z<2;++z)for(int z=0;z<2;++z)for(int z=0;z<2;++z)có nghĩa là gì, chúng tôi muốn nói gì Tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/36507203/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress