Re: [問題] printf變數型態問題
※ 引述《smallstrong2 (小強)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: GCC
: 問題(Question):
: #include <stdio.h>
: int main(void) {
: int a=5;
: float b=5;
: printf("%f\t%d\n", a/2,a/2);
: printf("%f\n",a/2);
: printf("%d\n"a/2);
: printf("%f\t%d\n", b/2,b/2);
: printf("%f\n",b/2);
: printf("%d\n",b/2);
: }
: (1)為什麼發亮的地方是0???
黃色的地方會為 0 ,都是型別錯誤的原因。
: (2)為什麼順序的不同會造成結果不同??
我猜你所謂的亂數指的應該是 4199093 這個部分,
(請見最下面的推文)
這其實也是和型別有關,由於 float 佔 8位元,
因此當 int 的 a 做完運算後還是 int ,
他的大小也是只有 4 位元,可是以 float 下去讀將取 8 位元,
因此也導致了後面的錯誤。
: [output]
: 0.000000 4199093(亂數)
: 0.000000
: 2
: 2.500000 0
: 2.500000
: 0
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.217.21.138
推
07/05 02:04, , 1F
07/05 02:04, 1F
→
07/05 02:05, , 2F
07/05 02:05, 2F
→
07/05 02:05, , 3F
07/05 02:05, 3F
→
07/05 02:06, , 4F
07/05 02:06, 4F
→
07/05 02:06, , 5F
07/05 02:06, 5F
感謝指證!
→
07/05 04:30, , 6F
07/05 04:30, 6F
→
07/05 04:31, , 7F
07/05 04:31, 7F
→
07/05 07:33, , 8F
07/05 07:33, 8F
※ 編輯: cleanwind 來自: 120.101.9.24 (07/05 08:12)
推
07/05 14:28, , 9F
07/05 14:28, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):