[問題] float (加減乘除) int 問題
小弟我再進行C++測試時遇到一點小問題
[問題1:Type checking概念]
測試1:
int a 10 ;
float b = 2.5 ;
b = a + b ;
printf( "%f", b ) ;
印出值為:12.5 << 因為會發生型別轉換
測試2:
int a = 10 ;
float b = 2.5 ;
b = a / 3 ;
printf( "%f", b ) ;
印出值為:3 << 沒有轉換 應該要是3.33333
需要改成b = (float)a / 3 才能印出正確的值
為什麼測試1的不需要就能印出正確的值??????
-----------------------------------------------------
[問題2:宣告]
char a[50] ; // call stack
char b = new char[50] // call heap
基本上這兩種是一樣的東西
只是存放在stack 跟 heap 的差別
但是這個差別
在甚麼情況
會really makes a difference ????
這問題困擾我好久 請高手解答 感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.135.236.242
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1397979369.A.38D.html
推
04/20 15:37, , 1F
04/20 15:37, 1F
我了解了 所以type checking是發生在"+"符號時 進行轉換 如果同樣型別 就不轉換
※ 編輯: SuperMaster (140.135.236.242), 04/20/2014 15:45:03
推
04/20 15:44, , 2F
04/20 15:44, 2F
char b 更正為 char * b 那假設以固定設為50 在程式運作過程 會有不同的地方嗎
※ 編輯: SuperMaster (140.135.236.242), 04/20/2014 15:46:46
→
04/20 15:46, , 3F
04/20 15:46, 3F
→
04/20 15:47, , 4F
04/20 15:47, 4F
→
04/20 15:47, , 5F
04/20 15:47, 5F
推
04/20 16:00, , 6F
04/20 16:00, 6F
沒錯 3變成3.0<< float 這樣程式碰到int/float 就會進行轉換 對吧!
推
04/20 23:47, , 7F
04/20 23:47, 7F
→
04/20 23:48, , 8F
04/20 23:48, 8F
→
04/20 23:48, , 9F
04/20 23:48, 9F
→
04/20 23:48, , 10F
04/20 23:48, 10F
摁摁我知道 但我想知道程式在系統內是怎麼運作的
'+'號 在我們所知就是一般的加號
但是對程式來說'+'不單單是加號的意思
一但遇到 float + int 與 int + int
雖然都是'+' 在在內部運作是完全不一樣的
我記得這好像是operator overloading的觀念
如有錯誤 請多指教~
推
04/21 01:59, , 11F
04/21 01:59, 11F
※ 編輯: SuperMaster (36.230.214.120), 04/21/2014 11:56:14
推
04/21 13:08, , 12F
04/21 13:08, 12F
推
04/22 10:50, , 13F
04/22 10:50, 13F
→
04/22 10:51, , 14F
04/22 10:51, 14F
→
04/22 10:53, , 15F
04/22 10:53, 15F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):