
Các kiểu dữ liệu số nguyên trong C++
Bài tập
Bạn hãy viết chương trình tạo ra 2 biến a
và b
kiểu số nguyên. Sau đó gán giá trị cho a = 384847522, b = 988347273
và thực hiện hiển thị ra màn hình tích của biến a
và biến b
.
Lý thuyết
Trong ngôn ngữ lập trình C++ có các kiểu dữ liệu lưu trữ số nguyên như: short, int, long, long long...
Sự khác biệt giữa các kiểu dữ liệu này là miền giá trị:
Miền giá trị của kiểu short
là từ -32768
tới 32767
.
Miền giá trị của kiểu int
là từ -2147483648
tới 2147483647
.
Miền giá trị của kiểu long
là từ -2147483647
tới 2147483647
(giống với miền dữ liệu của kiểu int
).
Miền giá trị của kiểu long long
là từ -9223372036854775808
tới 9223372036854775807
.
Có thể thấy miền giá trị của kiểu long long
là lớn nhất, do đó bạn có thể dùng kiểu dữ liệu này để thay cho các kiểu dữ liệu khác nhưng bù lại dùng kiểu dữ liệu này sẽ tốn bộ nhớ hơn (kiểu dữ liệu có miền giá trị càng lớn sẽ càng tốn bộ nhớ). Do đó bạn cần sử dụng các kiểu dữ liệu một cách hợp lý, ví dụ biến để lưu trữ số học sinh trong một lớp học nên là kiểu short
vì thường một lớp chỉ có vài chục học sinh.
Lưu ý: Miền giá trị của các kiểu dữ liệu còn phụ thuộc vào yếu tố khác nhưng thường sẽ giống như trên.
Quay lại bài này, bạn không thể dùng kiểu int
để lưu giá trị cho biến a
và b
do kết quả của phép nhân 2 số kiểu int
sẽ là 1 số kiểu int
mà miền giá trị của kiểu int
là không đủ để lưu trữ kết quả của phép nhân 384847522 * 988347273
. Ví dụ chương trình:
#include<iostream>
using namespace std;
int main() {
int a = 384847522;
int b = 988347273;
cout << a * b;
return 0;
}
Sẽ cho ra kết quả:
-628954446
Có thể thấy kết quả này là sai hoàn toàn, bạn cần dùng một kiểu dữ liệu lớn hơn cho biến a
và biến b
.
Đọc tới đây chắc bạn cũng đã đoán được sẽ phải dùng kiểu dữ liệu gì để làm bài này. Hãy quay lại phần bài tập và làm thử.
Nếu bạn vẫn chưa làm được thì có thể xem hướng dẫn ở bên dưới.
Hướng dẫn
Dùng kiểu long long
thay vì int
cho biến a
và biến b
.
Code mẫu:
#include<iostream>
using namespace std;
int main() {
long long a = 384847522;
long long b = 988347273;
cout << a * b;
return 0;
}
Hoặc nếu bạn muốn dùng kiểu int
cho biến a
và biến b
thì có thể làm như sau:
#include<iostream>
using namespace std;
int main() {
int a = 384847522;
int b = 988347273;
/*
Mặc định kết quả của phép nhân 2 số kiểu int
sẽ là một số kiểu int nên bạn cần dùng câu lệnh (long long)
để báo rằng kết quả của phép nhân này là một số kiểu long long
*/
cout << (long long)a * b;
return 0;
}
Post Comment