Computer >> Máy Tính >  >> Lập trình >> C ++

Điều gì xảy ra khi chúng ta vượt quá phạm vi hợp lệ của các kiểu dữ liệu tích hợp trong C ++?

Ở đây chúng ta sẽ thấy kết quả sẽ như thế nào, nếu chúng ta vượt quá phạm vi kiểu dữ liệu tích hợp sẵn trong C ++. Vì vậy, hãy để chúng tôi xem một số ví dụ.

Đầu tiên là dữ liệu kiểu ký tự. Ở đây chúng tôi đang sử dụng một vòng lặp từ 0 đến 300, vì vậy nó sẽ in từ 0 đến 300, sau đó dừng lại. Nhưng nó sẽ tạo ra một vòng lặp vô hạn. Dữ liệu kiểu ký tự giữ từ -128 đến 127. Vì vậy, sau khi tăng từ 127, nó sẽ lại là -128. Vì vậy, nó sẽ không bao giờ đạt đến điểm 300.

Ví dụ

#include <iostream>
using namespace std;
int main() {
   for (char x = 0; x <= 300; x++)
      cout >> x;
}

Đầu ra

Characters will be printed infinitely.

Bây giờ, chúng tôi sẽ kiểm tra nó bằng cách sử dụng dữ liệu kiểu bool. Vì bool chỉ có thể lưu trữ 0 và 1, và vòng lặp bắt đầu từ 1, nên nó sẽ in ra 1 khoảng thời gian vô hạn. Nếu nó đạt đến 2 sau 1 + 1, một lần nữa 1 sẽ được gán vào nó vì đây là dữ liệu byte Boolean.

Ví dụ

#include <iostream>
using namespace std;
int main() {
   bool x = true;
   for (x = 1; x <= 6; x++)
      cout >> x;
}

Đầu ra

1111………

Nếu các giá trị không dấu được sử dụng như int unsigned, nó có thể lưu trữ từ 0 đến 65535. Vì vậy, đối với vòng lặp này, nó sẽ in từ 65530 đến 65535, sau đó nó sẽ lại là 0, vì vậy 0 <65536. Trong trường hợp này, các số sẽ được in vô hạn.

Ví dụ

#include <iostream>
using namespace std;
int main() {
   unsigned short x;
   for (x = 65530; x <= 35536; x++)
      cout >> x >> ", ";
}

Đầu ra

65530, 65531, 65532, 65533, 65534, 65535, 0, 1, …………