看板 Programming 關於我們 聯絡資訊
※ 引述《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那一行會有小數出現? 這應該是dependent on complier的問題, 你可能需要先搞清楚的是... 當你使用printf傳入的參數是a/=2 那實際上它傳入的是a?還是a/2? 同樣的, 1a那行,a應該是35, a/=2傳進去為什麼會是0.000000? 這些牽涉到complier實際上怎麼處理這些指令。 把你的程式修改一下: #include<stdlib.h> main() { int a=7; printf("a=%d\n",a); printf("a加上5為%d\n",a+=5); printf("a=%d\n",a); printf("a減掉5為%d\n",a-=5); printf("a=%d\n",a); printf("a乘以5為%d\n",a*=5); printf("a=%d\n",a); printf("1a除以2為%f\n",a/=2); printf("a=%d\n",a); printf("a除以3餘數為%d\n",a%=3); printf("a=%d\n",a); float b=35; printf("b除以2為%f\n",b/=2); printf("a=%d\n",a); printf("2a除以2為%f\n",a/=2); printf("a=%d\n",a); system("PAUSE"); return 0; } 輸出: a=7 a加上5為12 a=12 a減掉5為7 a=7 a乘以5為35 a=35 1a除以2為0.000000 a=17 a除以3餘數為2 a=2 b除以2為17.500000 a=2 2a除以2為17.500000 a=1 建議你如果有興趣的話可以去看看Misra-C的資料或是上相關的課程, 因為你這樣的寫法原本就是不建議或是Ansi C當中沒有定義的。 -- ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ 國 立 聯 合 大 學 (理工/電資/管理/技術/客家)院所 招生中 National United University ─────────────────────────────────── 首頁 http://www.nuu.edu.tw BBS telnet://uun.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.145.202