Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ชนิดข้อมูลพื้นฐานที่ไม่ได้กำหนดค่าเริ่มต้นใน C/C++


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