我是C語言的初學者,在JavaScript之後開始並且無法習慣這些類型。C:數據類型。 sqrt函數與int工作爲什麼?
好的math.h的sqrt函數應該與雙打一起工作,據我所知,在C中,您不能將錯誤的類型作爲參數傳遞。
但是,當我去:
int b = sqrt(1234); //it works
也是如此
float b = sqrt(1234); // it works
int b = sqrt(1234.22) // it works
爲什麼所有這些工作?這個過程是什麼樣子的?
我的猜測是:sqrt的參數自動轉換爲double,不管我通過什麼, 和結果double轉換爲int如果我分配的變量是類型int。
然後有兩個問題?
1)爲什麼我得到一個錯誤與其他函數,如果我通過錯誤的類型,但不是與sqrt? 2)如果我們只需將int轉換成浮動這樣
float b = 123.44
int a = b;
爲什麼我們需要這個?
float b = 123.44
int a = (int) b;
當您將它作爲參數發送時,您實際上會創建一個參數類型的變量,並將傳遞的變量轉換爲該參數的類型。 – bitcell 2014-11-24 13:16:22
你的猜測是正確的。 1)請示例2)您不需要它:http://ideone.com/x3AQqt – mch 2014-11-24 13:19:04
「爲什麼如果我傳遞了錯誤的類型但不包含sqrt,則會出現其他函數出錯」 - 這不是一般事情;一些隱式轉換是可能的,有些則不是。 2.「爲什麼我們需要這個?」 - 什麼導致你相信你需要那個? **你沒有。** – 2014-11-24 13:47:38