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
Lỗi overflow trong C++
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
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.
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
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