โดยปกติใน C เราต้องบอกคอมพิวเตอร์ถึงชนิดของข้อมูลในการประกาศตัวแปร เช่นในโปรแกรมต่อไปนี้ฉันต้องการพิมพ์ผลรวมของตัวเลขทศนิยมสองตัว X และ Y
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
ฉันต้องบอกคอมไพเลอร์ถึงชนิดของตัวแปร X
- คอมไพเลอร์ไม่สามารถระบุประเภทของ
X
ตัวเองได้หรือไม่
ใช่มันสามารถทำได้ถ้าฉันทำสิ่งนี้:
#define X 5.2
ตอนนี้ฉันสามารถเขียนโปรแกรมโดยไม่บอกคอมไพเลอร์X
ว่าเป็น:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
ดังนั้นเราจะเห็นว่าภาษา C มีคุณสมบัติบางอย่างที่ใช้ซึ่งสามารถกำหนดประเภทของข้อมูลด้วยตัวเอง ในกรณีของฉันมันกำหนดว่าX
เป็นประเภทลอย
- ทำไมเราต้องพูดถึงประเภทของข้อมูลเมื่อเราประกาศบางสิ่งใน main ()? ทำไมถึงไม่สามารถคอมไพเลอร์กำหนดชนิดข้อมูลของตัวแปรในตัวของมันเองเช่นเดียวกับใน
main()
#define
#define X 5.2
, X
ไม่ได้เป็นตัวแปร แต่คงที่ดังนั้นมันจะถูกแทนที่แท้จริงจะ preprocessor กับทุกที่ที่คุณกล่าวถึง5.2
คุณไม่สามารถโอนสิทธิX
X
auto
ทำในสิ่งที่คุณต้องการจริงๆ) ในทางกลับกันถ้าคุณคิดว่าคุณรู้ว่าโค้ดของคุณทำอะไรอยู่และคุณพิมพ์อะไรอย่างอื่นการพิมพ์แบบคงที่จะทำให้เกิดข้อผิดพลาดก่อนหน้านี้ก่อนที่มันจะกลายเป็นปัญหาใหญ่ ทุกภาษามีความสมดุล: การพิมพ์แบบคงที่, พิมพ์ต่ำ, พิมพ์แบบไดนามิก สำหรับงานบางอย่างการพิมพ์พิเศษนั้นคุ้มค่าจริง ๆ สำหรับคนอื่น ๆ มันเป็นการสิ้นเปลือง
5.2
คือ adouble
ดังนั้นโปรแกรมแรกปัดเศษตัวอักษรคู่ให้float
มีความแม่นยำจากนั้นเพิ่มเป็นลอยในขณะที่รอบที่สองเป็นตัวแทนคู่ของ 5.1 กลับไปdouble
และเพิ่มลงในdouble
ค่า 5.2 โดยใช้การdouble
เพิ่มแล้วปัดผลลัพธ์ของการคำนวณนั้นเป็นfloat
ความแม่นยำ . เนื่องจากการปัดเศษเกิดขึ้นในสถานที่ต่าง ๆ ผลลัพธ์อาจ dffer นี่เป็นเพียงหนึ่งตัวอย่างสำหรับประเภทของตัวแปรที่มีผลต่อพฤติกรรมของโปรแกรมที่เหมือนกัน