Câu hỏi liên quan

Why does this loop produce "warning: iteration 3u invokes undefined behavior" and output more than 4 lines?


0 Phiếu
Đã hỏi 24/5/2016 bởi Gur5624The (540,830 điểm)
Biên soạn này:
#include <iostream>
int main()
{
    for (int i = 0; i < 4; ++i)
        std::cout << i*1000000000 << std::endl;
}
gcc tạo ra các cảnh báo sau đây:
warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations]
   std::cout << i*1000000000 << std::endl;
                  ^
tôi hiểu đó là một ký integer tràn. Những gì tôi không thể nhận được là lý do tại sao i value bị hỏng do thao tác overflow ? Tôi đã đọc câu trả lời cho sao integer overflow trên x86 với GCC gây ra một vòng lặp vô hạn? , nhưng tôi sẽ vẫn còn chưa rõ ràng về lý do tại sao điều này xảy ra - tôi nhận được rằng có nghĩa là "không xác định" "bất cứ điều gì có thể xảy ra", nhưng những gì là cơ bản các nguyên nhân gây ra cụ thể hành vi này? Trực tuyến: http://ideone.com/ dMrRKR trình biên dịch: gcc (4.8)

Xin vui lòng đăng nhập hoặc đăng ký để trả lời câu hỏi này.


ToughDev Q&A là gì?

Trang web hỏi đáp cho các bạn đam mê lập trình, phát triển phần mềm và các vấn đề kỹ thuật khác. Với sự giúp đỡ của bạn, chúng tôi hy vọng sẽ xây dựng thành công một thư viện đầy đủ các câu hỏi và trả lời về tất cả các vấn đề có liên quan đến lập trình!







...