看板 Programming 關於我們 聯絡資訊
我想問題出在於對 int及float的型別宣告、觀念等仍不熟, 而且程式中還看到只有人類才會出現的算數思考模式! 舉個例: 35 ÷7 = 5 35 ÷2 = 17.5 若是結構式程式語言, 則應該這麼做: int a = 35; float b = 35; printf("a除以7等於%d\n", a /= 7); printf("b除以2等於%f\n", b /= 2); 簡單講就是運算的數值型別跟printf的型別必須一樣! 已經分別用不同顏色標示出來給你看囉!!! 有人回文說數值不會自動轉換, 這是正確的! 因此程式設計師必須要特別注意數值型別及運算!! 有兩個方式修改: 法一: printf("1a除以2為%f\n", a/=2); //紅色是錯誤 --> printf("1a除以2為%d\n", a/=2); //綠色是修正 法二: printf("1a除以2為%f\n", float(a/=2)); //綠色是修正 在一兩篇回文有看到說原始程式的寫法是不建議且不符合ANSI C,這的確是! 而且原作者的程式撰寫習慣在觀念易產生錯誤!就像原作者的錯誤觀念是一樣的 ! 正確的寫法應該是按部就班,這對初學程式語言的人較易於釐清觀念。 所以保險做法應該是這樣子: int a = 35; float 1a = (float(a))/2; //先將int型別的a轉換成float型別, 再運算! -- ※ 引述《jiannrong@kkcity.com.tw ( )》之銘言: : 我有一個問題,請看以下語法(我只是修改printf的敘述) : #include<stdlib.h> : main() : { : int a=7; : printf("a=%d\n",a); : printf("a加上5為%d\n",a+=5); : printf("a減掉5為%d\n",a-=5); : printf("a乘以5為%d\n",a*=5); : printf("1a除以2為%f\n",a/=2); : printf("a除以3餘數為%d\n",a%=3); : float b=35; : printf("b除以2為%f\n",b/=2); : printf("2a除以2為%f\n",a/=2); : system("PAUSE"); : return 0; : } : 執行的結果為 : a=7 : a加上5為12 : a減掉5為7 : a乘以5為35 : 1a除以2為0.000000 : a除以3餘數為2 : b除以2為17.500000 : 2a除以2為17.500000 : 請按任意鍵繼續 . . . : 現在的重點是a是int型態 : printf("1a除以2為%f\n",a/=2); : printf("2a除以2為%f\n",a/=2); : 而輸出結果為 : 1a除以2為0.000000 : 2a除以2為17.500000 : 為何2a那一行會有小數出現? -- ╭──── Origin:<不良牛牧場> bbs.badcow.com.tw (210.200.247.200)─────╮ Welcome to SimFarm BBS -- From : [59.113.165.104] ◣◣◢ ◢◢不良牛免費撥接→電話:40586000→帳號:zoo→密碼:zoo ◣◣─╯
pthuang:哇 這篇是從不良牛來的耶 XD 140.126.21.58 12/12 00:36