หนึ่งในคำถามที่พบบ่อยที่สุดคือค่าของค่าข้อมูลดั้งเดิมที่ยังไม่ได้กำหนดค่าใน 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++ จึงไม่กำหนดค่าเริ่มต้นให้กับตัวแปร คำตอบคือ ค่าใช้จ่ายในการเริ่มต้นตัวแปรสแต็กนั้นค่อนข้างแพง มันขัดขวางความเร็วในการดำเนินการด้วย ดังนั้นตัวแปรเหล่านี้จึงอาจมีค่ากลางอยู่บ้าง เราจึงต้องเริ่มต้นค่าประเภทข้อมูลดั้งเดิมก่อนใช้งาน