Loading Now

Các kiểu dữ liệu số nguyên trong C++

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 ab 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 ab 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

Contact