[問題] 資料型別的問題??

看板C_and_CPP作者 (顧正妹)時間13年前 (2011/05/09 18:23), 編輯推噓1(1018)
留言19則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEV C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) NO 問題(Question): 我不太懂運算資料型別的問題 想要練習寫一個找零錢的程式 只寫到要找幾個五百就卡住了QQ 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a,b,c;--->如果改成int a,b float c會算不出正常值,請問為什麼? printf("請輸入付款金額\n"); scanf("%d",&a); printf("請輸入購物金額\n"); scanf("%d",&b); c=a-b; c=c/500; printf("%f\n", c);--->我如果放%d就可以正常算出整數值 system("PAUSE"); return 0; } 看到書上說的資料轉換的級別 char-->int-->long-->float-->double 所以這個觀念是用在甚麼時候? 可以在printf指定整數給浮點數嗎?或是反之呢? 載運算的時候等號兩邊一定要是同一型的資料嗎? 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.218.220

05/09 18:27, , 1F
建議要同一型別 除非你很清楚他的格式
05/09 18:27, 1F

05/09 18:46, , 2F
你說的 "算不出正常值" 是發生了什麼事情呢?
05/09 18:46, 2F

05/09 18:49, , 3F
我猜是輸出0.000000....
05/09 18:49, 3F

05/09 19:47, , 4F
轉型規轉型 printf()歸printf() 不可混為一談哦!!!
05/09 19:47, 4F

05/09 19:47, , 5F
在運算式型別不一樣compiler會自動幫你轉 頂多結果不如預期
05/09 19:47, 5F

05/09 19:48, , 6F
但printf很緊,前面幾個後面就要接幾個,型別也很嚴格
05/09 19:48, 6F

05/09 19:48, , 7F
錯一個都不行,不然會有意想不到的錯誤歐!
05/09 19:48, 7F

05/09 19:49, , 8F
嘛,因為int要配%d float要配%f啊 0.0
05/09 19:49, 8F

05/09 19:49, , 9F
建議書仔細看一遍 應該就可以解決了
05/09 19:49, 9F

05/09 19:50, , 10F
不過以原文要找零錢,應該是要直接把小數砍掉 用int比較好
05/09 19:50, 10F

05/09 22:25, , 11F
他原本就宣告int了...
05/09 22:25, 11F

05/10 00:00, , 12F
的確會變成o.ooooo
05/10 00:00, 12F

05/10 00:01, , 13F
我原本是想用printf("%d",c)的方式把float c 去小數
05/10 00:01, 13F

05/10 00:02, , 14F
不過好像跑不出預期的整數值
05/10 00:02, 14F

05/10 00:03, , 15F
如果C是float,ab是int然後寫成c=a-b 合語法嗎?
05/10 00:03, 15F

05/10 00:04, , 16F
看完大家的解釋有一點眉角了~謝謝大家
05/10 00:04, 16F

05/10 10:56, , 17F
其實c=a-b的計算,三個變數都用一樣比較好,而且float是
05/10 10:56, 17F

05/10 10:57, , 18F
有名的差不多先生,你硬要用flota輸出,會有問題喔
05/10 10:57, 18F

05/10 11:00, , 19F
當然可以這樣用printf("%.0f\n", c); 但是數字不合輸出
05/10 11:00, 19F
文章代碼(AID): #1Dny2Q_Q (C_and_CPP)