推 BSpowerx:因為a和3型態都是int,兩個int運算自然只會回傳int值 04/20 15:37
我了解了 所以type checking是發生在"+"符號時 進行轉換 如果同樣型別 就不轉換
※ 編輯: SuperMaster (140.135.236.242), 04/20/2014 15:45:03
推 CaptainH:問題2: (1) heap可以分配較大的陣列, 例如把50改成500萬 04/20 15:44
char b 更正為 char * b 那假設以固定設為50 在程式運作過程 會有不同的地方嗎
※ 編輯: SuperMaster (140.135.236.242), 04/20/2014 15:46:46
→ CaptainH:stack 通常會爆炸, heap 不會. (2) 當陣列大小是執行時才 04/20 15:46
→ CaptainH:確定時, 只能用 new[] 04/20 15:47
→ CaptainH:(3) new 出來的需要 delete 04/20 15:47
推 diabloevagto:把測試2的3改成3.0即可,這樣就跟測試1的環境一樣了 04/20 16:00
沒錯 3變成3.0<< float 這樣程式碰到int/float 就會進行轉換 對吧!
推 Hurricaneger:測試1,我覺得不太是型別轉換,你指定b=a+b,就是a+b 04/20 23:47
→ Hurricaneger:值再指定給b 而已啊測試2,float b;跟你下一行 b =a/3 04/20 23:48
→ Hurricaneger:也沒什麼關係,你設 float a =10;float b=0;b=a/3這 04/20 23:48
→ Hurricaneger:樣就是你要的答案了吧! 04/20 23:48
摁摁我知道 但我想知道程式在系統內是怎麼運作的
'+'號 在我們所知就是一般的加號
但是對程式來說'+'不單單是加號的意思
一但遇到 float + int 與 int + int
雖然都是'+' 在在內部運作是完全不一樣的
我記得這好像是operator overloading的觀念
如有錯誤 請多指教~
推 diabloevagto:看不太懂樓上的意思 04/21 01:59
※ 編輯: SuperMaster (36.230.214.120), 04/21/2014 11:56:14
推 Hurricaneger:不要怕,我也是新手,推推自己的想法而已,喵喵 04/21 13:08
推 lc85301:compiler在處理運算子時會檢查兩邊的型別,不一致的話會 04/22 10:50
→ lc85301:會加上型別轉換,就是這樣 04/22 10:51
→ lc85301:在C裡面+就是+,cpp 才有operator overloading的概念 04/22 10:53