หนึ่งในคำถามที่พบบ่อยที่สุดคือค่าของค่าข้อมูลดั้งเดิมที่ยังไม่ได้กำหนดค่าใน C หรือ C++ มีค่าเท่าใด คำตอบก็จะแตกต่างกันไปในแต่ละระบบ เราสามารถสันนิษฐานได้ว่าคอมไพเลอร์จะกำหนด 0 ให้กับตัวแปร สามารถทำได้สำหรับจำนวนเต็มเป็น 0 สำหรับ float 0.0 แต่ข้อมูลประเภทอักขระจะเป็นอย่างไร
ตัวอย่าง
#include <iostream> using namespace std; main() { char a; float b; int c; double d; long e; cout << a << "\n"; cout << b << "\n"; cout << c << "\n"; cout << d << "\n"; cout << e << "\n"; }
เอาต์พุต (บน Windows Compiler)
1.4013e-045 0 2.91499e-322 0
เอาต์พุต (บน Linux Compiler)
0 0 0 0
ทีนี้ คำถามก็มาถึง เหตุใด C หรือ C++ จึงไม่กำหนดค่าเริ่มต้นให้กับตัวแปร คำตอบคือ ค่าใช้จ่ายในการเริ่มต้นตัวแปรสแต็กนั้นค่อนข้างแพง มันขัดขวางความเร็วในการดำเนินการด้วย ดังนั้นตัวแปรเหล่านี้จึงอาจมีค่ากลางอยู่บ้าง เราจึงต้องเริ่มต้นค่าประเภทข้อมูลดั้งเดิมก่อนใช้งาน