我想通過閱讀C Programming Language, 2nd Edition來學習C語言。我有一些編程經驗,但不與C.在printf中使用%d時,浮點變量會發生什麼變化?
我在第1章目前是我有以下代碼:
float f;
for (f = 0.0; f <= 3; f += 1.1)
printf("A: %3f B: %6.2f\n", f, f + 0.15);
它打印輸出:
A: 0.000000 B: 0.15
A: 1.100000 B: 1.25
A: 2.200000 B: 2.35
看起來很好。
現在我改變的printf如下:
printf("A: %3d B: %6.2f\n", f, f + 0.15);
新的輸出
A: 0 B: 0.00
A: -1610612736 B: 0.00
A: -1610612736 B: -625777476808257557292155887552002761191109083510753486844893290688350183831589633800863219712.00
這是怎麼回事?我期望float會被轉換爲int,因爲我使用了%d,但那不是發生了什麼。另外,爲什麼值B也出錯?這裏發生了什麼事?
你沒有要求它將它轉換爲int,你告訴它它**是** int!垃圾進垃圾出。 –