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



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