2009-07-21 30 views

Trả lời

19

Chính xác. Trích dẫn từ tiêu chuẩn, 4.9, "Hành vi không xác định nếu giá trị cắt ngắn không thể được biểu diễn trong loại đích."

4

David Thornley đã trả lời câu hỏi này hoàn toàn. Tuy nhiên để đối phó với tình huống này trong mã của bạn, bạn nên xem xét boost's numeric_cast.

double d = double(INT_MIN) - 10000.0; 
int a = boost::numeric_cast<int>(d); 

này sẽ ném một ngoại lệ trong thời gian chạy nếu d là quá lớn đối với một int.

Các vấn đề liên quan