C中運算結果中數值型別的問題

2021-03-12 14:34:58 字數 655 閱讀 6028

1樓:

你何以見得它們返回的分別是int,double和double.上面三個都應該返回double型.

double r = 9; //編譯器會認為你的9是double型別,而不是int型別

double c = 23 / 7 * r //因為r是double型別,但是23和7不是,所以先按int計算,23/7=3再隱式轉換成double的3.0再乘以r(9.0)結果就是27.

0double c=23.0/7*r //同理

double c= r*23/7 //同理

但是如果這樣寫:

double c = 23 / 7 * 9; // 因為沒有帶小數的,編譯器預設都是int型,會按int型計算,然後隱式轉換後給c賦值,所以是23 / 7 = 3(int型別的計算)再乘以 9,所以結果27

2樓:

計算結果會以最大的型別作為返回值的型別

如:int和float相乘 結果會返回float

返回兩個數中空間最大的型別

3樓:匿名使用者

一般這種情況,根據你的左邊的型別加個顯式或者隱式轉換就可以避免

4樓:仰起臉__微笑

應該都是double啊

C 中關於運算子過載的問題,C 中關於運算子過載的乙個問題

如果沒有自己定義預設建構函式,而你使用了ccomplex s 顯然編譯器是會報錯的。在c 中如果程式設計師沒有編寫任何形式的建構函式,那麼編譯器就會自動合成乙個預設 的建構函式,原型可能是這個樣子 classname 該建構函式用來構造預設物件。而一旦程式設計師自己定義了任何形式的其他建構函式,那麼...

c 中的位運算符號,c 中位運算

一 位運算子c語言提供了六種位運算子 按位與 按位或 按位異或 取反 左移 右移 用法 1.按位與運算子 按位與運算子是雙目運算子,其功能是將參與運算的兩運算元各自對應的二進位制為進行於操作。只有對應的兩個二進位制位均為1 是,結果對應的二進位制位才為 1,否則為0.例如 表示式 21 18 的計算...

計算機基本運算中,補碼運算怎樣判斷數值是否有溢位

用二進位制補碼,表示正負數,具有一定的表示範圍。當運算結果,超出了它所能表示的範圍,就會溢位。如果出現了溢位,這組 就不能正確表示結果。八位二進位制 0000 0000 1111 1111。也就是十進位製數 0 255。它們如果是補碼 0 127,就直接代表零和正數 128 255,則以補碼代表 1...