ปัญหา
ประกาศตัวแปร int และ float โดยไม่กำหนดค่าเริ่มต้น และพยายามพิมพ์ค่าของพวกมันในภาษา C อธิบายว่าจะเกิดอะไรขึ้น
วิธีแก้
หากตัวแปรถูกประกาศแต่ไม่ได้กำหนดค่าเริ่มต้น (Uninitialized) และพยายามพิมพ์ค่า จะได้ค่า 0 หรือค่าขยะ (Garbage Value)
เมื่อเราประกาศตัวแปร ตำแหน่งหน่วยความจำจะถูกจัดสรรให้ตัวแปรนั้น การกำหนดค่าเริ่มต้นคือการครอบครองตำแหน่งหน่วยความจำที่จัดสรรไว้แล้ว
แต่ในโปรแกรมด้านล่าง เราไม่ได้กำหนดค่าในตำแหน่งหน่วยความจำที่จองไว้ แต่มันถูกครอบครองด้วยค่า 0 หรือค่าขยะโดยค่าเริ่มต้น เมื่อพยายามพิมพ์ จะแสดง 0 หรือค่าขยะเป็นเอาต์พุท
ตัวอย่าง
โปรแกรม C สำหรับการเข้าถึงตัวแปร int และ float:
#include <stdio.h>
int main() {
float a, b, c;
int x, y, z;
printf("value of a:%f\n", a);
printf("value of b:%f\n", b);
printf("value of c:%f\n", c);
printf("value of x:%d\n", x);
printf("value of y:%d\n", y);
printf("value of z:%d", z);
return 0;
}ผลลัพธ์
เมื่อรันโปรแกรม จะได้ผลลัพธ์ดังนี้:
value of a: 0.000000 value of b: 0.000000 value of c: 0.000000 value of x: 1512368 value of y: 0 value of z: 27