Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เกิดอะไรขึ้นเมื่อเกินช่วงค่าที่ถูกต้องของ Built-in Data Types ใน C++


ที่นี่เราจะดูผลลัพธ์ที่จะเกิดขึ้น หากเราเกินช่วงค่าที่ถูกต้อง (Valid Range) ของ Built-in Data Types ใน C++ มาดูตัวอย่างกัน

ตัวแรกคือชนิดข้อมูล Character (char) ที่นี่เราใช้ลูปจาก 0 ถึง 300 ดังนั้นควรพิมพ์จาก 0 ถึง 300 แล้วหยุด แต่จะเกิด Infinite Loop (ลูปไม่รู้จบ) ชนิดข้อมูล char เก็บค่าได้จาก -128 ถึง 127 ดังนั้นหลังจากเพิ่มจาก 127 จะกลายเป็น -128 อีกครั้ง จึงไม่มีทางถึง 300

ตัวอย่าง

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

ผลลัพธ์

Characters will be printed infinitely.

ตอนนี้เราจะทดสอบด้วยชนิดข้อมูล Bool เนื่องจาก bool เก็บได้แค่ 0 และ 1 และลูปเริ่มจาก 1 จะพิมพ์ 1 ไปเรื่อยๆ ถ้าถึง 2 หลังจาก 1+1 จะมีการกำหนด 1 ให้มันอีกครั้ง เนื่องจากเป็นข้อมูล Boolean Byte

ตัวอย่าง

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

ผลลัพธ์

1111………

ถ้าใช้ค่า Unsigned เช่น unsigned int เก็บได้ 0 ถึง 65535 ดังนั้นลูปนี้จะพิมพ์จาก 65530 ถึง 65535 แล้วจะกลายเป็น 0 อีกครั้ง ดังนั้น 0 < 65536 ในกรณีนี้ตัวเลขก็จะถูกพิมพ์ไปเรื่อยๆ (Infinite)

ตัวอย่าง

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

ผลลัพธ์

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