ในโปรแกรมที่กำหนดไม่ฉันได้รับผลลัพธ์ที่แตกต่างกันสำหรับแต่ละเหตุผลprintfหรือไม่?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
และมันแสดงเอาท์พุทต่อไปนี้:
44000002048.000000
44000000000.000000
doubleจะfloatเกิดขึ้นในภาษา C หรือไม่? หรือคุณต้องการที่จะรู้ว่าค่าที่เป็นผลมาจากการแปลงนั่นคือสิ่งที่มีผลต่อการแปลง? หรืออย่างอื่น?
Cที่เราใช้printf("%f",x)สำหรับfloatและสำหรับprintf("%lf",x) doubleเมื่อไหร่ที่สิ่งต่าง ๆ เปลี่ยนไป? และหนึ่งจะพิมพ์อย่างชัดเจนอย่างไร (เดี่ยว) float- printf("%hf",x)?
%lfใน printf %fเป็นสิ่งเดียวกับ floatในอาร์กิวเมนต์ตัวแปรจะถูกแปลงเป็นdoubleคอมไพเลอร์เช่นเดียวกับที่ได้รับการดัดแปลงให้เป็นshort int
4.4e10เป็นdoubleค่าคงที่ซึ่งจะถูกแปลงเป็นfloatในการเริ่มต้นของcแต่เก็บไว้เป็นเมื่อผ่านไปdoubleprintfแต่คุณอาจจะยังต้องการที่จะรู้ว่าการเพิ่มfคำต่อท้ายทำให้มันเป็นfloatค่าคงที่พิมพ์4.4e10fจะแสดงค่าเดียวกันที่เป็นผลมาจากการเริ่มต้นที่จะcค่าคงที่ที่4.4e10fแยกfloatออกจากdoubleค่าคงที่นั้นมีความสำคัญต่อการทำงานที่มีคุณภาพด้วยเลขคณิตทศนิยม