ในส่วนนี้ เราจะเห็นเมื่อเราประกาศตัวแปรหนึ่งตัวที่ไม่ได้กำหนดค่าเริ่มต้น ซึ่งค่าที่เก็บไว้ในภาษา C หรือ C++ บางครั้งเราคิดว่าคอมไพเลอร์กำหนดค่าบางอย่างเช่น 0 สำหรับ int, 0.0 สำหรับ float เป็นต้น แต่อะไรจะเป็นสำหรับประเภทข้อมูลอักขระ ให้เราดูการใช้งานและคอมไพล์โดยใช้คอมไพเลอร์ที่แตกต่างกัน
ตัวอย่าง (C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <iostream> using namespace std; int main() { char char_var; float float_var; int int_var; double double_var; long long_var; cout << char_var << endl; cout << float_var << endl; cout << int_var << endl; cout << double_var << endl; cout << long_var << endl; }
เอาต์พุต (คอมไพล์ใน Cpp.sh)
0 0 0 0
ผลลัพธ์ (รวบรวมใน GDB ออนไลน์)
5.88054e-39 0 6.95297e-310 0
เอาต์พุต (ระบบภายในเครื่อง)
9.73438e-039 4309744 1.15685e-306 -53505136
ตอนนี้คำถามมาถึงว่าทำไมคอมไพเลอร์ C/C++ ไม่เริ่มต้นตัวแปรด้วยค่าเริ่มต้น? คำตอบนั้นง่าย ค่าใช้จ่ายในการเริ่มต้นตัวแปรสแต็กนั้นมีราคาแพง เนื่องจากจะขัดขวางความเร็วในการดำเนินการ อันเป็นผลมาจากตัวแปรเหล่านี้สามารถประกอบด้วยค่าที่ไม่แน่นอน ดังนั้นจึงถือเป็นแนวทางปฏิบัติที่ดีในการเริ่มต้นตัวแปรประเภทข้อมูลพื้นฐานก่อนนำไปใช้ในโค้ด