Re: [問題] Dev C的問題

看板b96902HW作者 (bye~)時間16年前 (2007/09/29 00:29), 編輯推噓3(305)
留言8則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《lwkspy (平)》之銘言: : 想請問下為什麼平方了,答案還是會有負數 : 就好像Z=(((x2-x1)^2)+((y2-y1)^2)) , : 他的答案出來後,有時會是負數的... : 希望各位高手幫幫忙啦!謝謝 p 老師上課的時候說過, "compiler 很笨,所以你要用 compiler 的話來和 compiler 溝通!" 因此,初學程式的新手一定要注意 你得用 compiler 懂的方式來表達喔 比方說 "^" 吧,雖然 compiler 沒叫說他看不懂, 可是 compiler 有可能因為跟你有語言隔閡而誤解你! 課堂上目前教過的 operators 只有: + - * / % = == != >= <= > < 如果你想要用其他的 operators, 就得先確定 compiler 對那些符號的定義跟你一樣。 其實除了上課教過的以外, C 還有其他的 operators, 其中有一類是可以把兩個變數做 bit 間的兩兩運算的, "^" 就是屬於這種,它會對兩個變數的二進位碼做 bitwise XOR。 比方說 00110100 ^ 10011001 結果是會 10101101 然後電腦又根據用二進位存整數的規則把這串二進位碼「翻譯」成整數, 因此結果可能正好是某一個負數的二進位碼了。 -- n;main(i){return n?i<2?i:main(i-1)+main(i-2): scanf("%d",&n)&&printf("%d\n",n>0?main(n):0);} -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.54 ※ 編輯: chhsiao 來自: 140.112.30.54 (09/29 00:31) ※ 編輯: chhsiao 來自: 140.112.30.54 (09/29 00:39)

09/29 00:37, , 1F
題外話,^有一個應用,就是可以做變數值交換的動作
09/29 00:37, 1F

09/29 00:39, , 2F
#define swap(a,b) ((a)^=(b)^=(a)^=(b))
09/29 00:39, 2F

09/29 00:39, , 3F
以上巨集就可以把a,b值互換而不需暫存變數,但有個缺點
09/29 00:39, 3F

09/29 00:40, , 4F
是只能使用在整數型別
09/29 00:40, 4F

09/29 00:43, , 5F
喔喔 那個a=b就沒用了 
09/29 00:43, 5F

09/29 00:53, , 6F
不只整數喔 「整數系列」都可以 :p
09/29 00:53, 6F

09/29 01:02, , 7F
不是整數的話 可以用 pointer 轉型來惡搞 XD
09/29 01:02, 7F

09/29 01:02, , 8F
只要轉型的 type size 要跟原來的一樣
09/29 01:02, 8F
文章代碼(AID): #16_Im0vc (b96902HW)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #16_Im0vc (b96902HW)