Lỗi overflow trong C++

tại sao mình đã dùng kiểu long rồi mà vẫn bị overflow giá trị 600 tỉ kia vậy. ai giải đáp giúp mình với

kiểu long long mới bảo đảm 64-bit :V kiểu long chỉ bảo đảm >= 32-bit: https://en.cppreference.com/w/cpp/language/types#Properties

LLP64 là máy 64-bit xài Win64. LP64 là máy 64-bit xài Linux/Mac: https://en.cppreference.com/w/cpp/language/types#Data_models
image

chỉ có máy 64-bit xài Linux/Mac thì long mới có 64-bit :V Còn lại long toàn 32-bit.


nếu em muốn chắc chắn int 64-bit thì include <cstdint> rồi xài std::int64_t là bảo đảm int 64-bit.

5 Likes

a ơi , em thử sửa thành long long rồi, mà vẫn ko in ra đấy, vẫn bị overflow

có thấy warning overflow gì nữa đâu em :V

muốn chắc nữa thì em thêm LL vào cuối cái số dài ngoằn kia =] 600851475143LL

4 Likes

nó in ra số khác kìa a

ờm thêm LL vào cuối cái số 600… kia đi. Do mặc định số trong C++ nó hiểu là int :V thêm LL cho nó hiểu là số long long :V Giống như thêm f trong 1.0f cho nó hiểu là float chứ ko phải double ấy :V

ồ khoan em in là %d đâu có in được int 64-bit :V sửa lại là %lld. Mà C++ sao ko xài std::cout đi xài printf chi :V

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?