ที่นี่เราจะดูผลลัพธ์ที่จะเกิดขึ้น หากเราเกินช่วงค่าที่ถูกต้อง (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, …………