[問題] 溫度轉換問題

看板C_and_CPP (C/C++)作者 (Firefighter)時間13年前 (2013/01/29 00:46), 編輯推噓1(1021)
留言22則, 9人參與, 最新討論串1/1
新手第一次發問請多指教 請問輸入為攝氏轉換成華氏 反之亦然. 可以這麼寫嗎? 有沒有問題? #include <stdio.h> float oc(float i) { i = i * 9 / 5 + 32; return i; } float fc(float i) { i = (i - 32) * 5 / 9; return i; } int main() { float x; printf("輸入攝氏溫度:"); scanf("%f",&x); printf("華氏溫度為:%.2f\n\n",oc(x)); printf("輸入華氏溫度:"); scanf("%f",&x); printf("攝氏溫度為%.2f\n\n",fc(x)); system("PAUSE"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.72.218.21

01/29 00:48, , 1F
為何我看標題就知道問題在哪XD
01/29 00:48, 1F

01/29 00:49, , 2F
浮點數要寫 5.0f 不然他會當整數運算
01/29 00:49, 2F

01/29 00:50, , 3F
為什麼不跑一次卻要人肉compile?
01/29 00:50, 3F

01/29 00:53, , 4F
不用寫5.0,直接寫5是ok的
01/29 00:53, 4F

01/29 00:54, , 5F
他i是float,後面的數字遇到會自動轉型
01/29 00:54, 5F

01/29 00:55, , 6F
突然發現他的問題應該是能不能這樣抄...
01/29 00:55, 6F

01/29 00:59, , 7F
標準好像不保證乘除由左到右?
01/29 00:59, 7F

01/29 01:07, , 8F
@ az~ 大 : 乘除優先權是一樣的,由左到右沒問題
01/29 01:07, 8F

01/29 01:11, , 9F
罰你回去背operator associative表
01/29 01:11, 9F

01/29 01:18, , 10F
剛剛試跑一下 應該沒錯XD
01/29 01:18, 10F

01/29 01:19, , 11F
乘除優先順序弄錯與其罰背表應該要罰重讀小學XD
01/29 01:19, 11F

01/29 01:42, , 12F
我指的是(i*9)/5 和 i*(9/5)....
01/29 01:42, 12F

01/29 01:52, , 13F
http://ppt.cc/-HaA MSDN描述看不出來到底是怎樣會隨意
01/29 01:52, 13F

01/29 01:54, , 14F
不過我還是想說依賴自動轉型和運算順序很容易被搞
01/29 01:54, 14F

01/29 01:55, , 15F
有問題加括弧就對了XD
01/29 01:55, 15F

01/29 04:00, , 16F
有無括號有差嗎?照數學來看不是都一樣嗎
01/29 04:00, 16F

01/29 08:33, , 17F
為何不自己試試看 而上來問人?!
01/29 08:33, 17F

01/29 08:34, , 18F
樓樓上,有種情況是 9/5 == 1 然後就出錯了...
01/29 08:34, 18F

01/29 09:43, , 19F
因為你的同事數學可能比你爛
01/29 09:43, 19F

01/29 09:44, , 20F
你下次改程式的時候數學也可能比現在爛
01/29 09:44, 20F

01/29 09:45, , 21F
標準有定義乘除法是left-associativity (by grammer)
01/29 09:45, 21F

01/29 09:48, , 22F
因此 i*9/5 是 (i*9)/5 這沒問題
01/29 09:48, 22F
文章代碼(AID): #1H1gjBNe (C_and_CPP)
文章代碼(AID): #1H1gjBNe (C_and_CPP)