乙個簡單的C語言問題(型別轉換)求助

2025-02-06 13:15:11 字數 1558 閱讀 9842

1樓:神馬·似鳥非魚

這張vc6下的除錯**已經說明了所有的疑惑了。

2樓:小菊坂胡蝶

由於浮點數的舍入誤差:

的結果可能是: .455661210410 (此處若干未知資料),因此,強制轉換成 int 即為 2, 如果確實希望得到 3 這樣的結果,請使用:

int c= (int)(b/a+;以上!

3樓:霧中的陽光

也就是 b/a 的結果 不是 ?那麼 printf ("f",a/b) 的確是 啊。

我給你解釋下! 強制轉換 只改變運算時的值,變數本身的值是不變的!

double a=, b=;

int c;

c =(int)(b/a);此時c=2是毫無疑問。但同時a=,b=;

printf ("lf",b/a);此時輸出的應該是 ..455661210410

轉換過程 是先用double 計算a/b 得出double結果再強制轉換成 int 型!

c語言型別問題

4樓:網友

int和float在記憶體中儲存結構是不一樣的。

5樓:網友

對啊,你想10/3=,難道等於10?

關於c++型別轉換函式的問題,求詳解。

6樓:網友

答案是 d首先說明的是,我對「型別轉換函式」的理解是,轉型運算子的過載。

a 所有運算子的過載,派生類都會繼承,轉型運算子也不例外,所以是錯的。

b 乙個型別可以定義多個 轉型運算子,但要注意二義性的問題。所以也是錯的。

c 轉型運算子的過載,既不能帶引數,也不能指定返回型別。所以也是錯的。

d 說明了轉型運算子的功能。是對的。

c語言中的型別轉換

7樓:網友

你真的是沒好好看書。

2+3)*的演算法如下:

然後根據向零取整原則,int變成52

3/5*的演算法如下:

3/5 = 0 //別忘了int型除法最終結果也是int型,就是先算等於,然後向零取整變成0

最終結果就是0

的演算法如下:

然後向零取整,變成了13.

有不明白的追問。

求助:c++超怪異的型別轉換!

8樓:網友

將a變數設為雙精度double,值略小於,可見double在精度下存在誤差。

關於你問的(long)(a*10)為什麼不是31,是因為a實際值為,a*10取整數截斷自然是30

這其實是因為,浮點數在記憶體中以二進位儲存,會存在一定誤差,原因我也不清楚,應該有關於數學和演算法方面,你可以去搜下「浮點數精度丟失」。當需要高精度的計算時,我想出來的解決方案是用兩個整數型別表示——分子與分母。例如可以表示為314和100。

9樓:物理公司的

long就是長整型啊,long int,所以是整數。

簡單的C語言程式,求結果,一個簡單的C語言程式,求結果。。

getmemory1 沒有起作用,因為按值傳引數,str沒有改變。getmemory2給str分配了100位元組strcyp str,hello 往str中寫入了helloprintf n str is s str 可能輸出hello,也可能會出錯,因為記憶體已經釋放,立即訪問一般不會有問題,但是沒...

求C語言問題的程式,求一個C語言問題的程式!

include stdio.h include string.h include ctype.h int invertion char ch1,char ch2,int n 原字串由形參傳給ch1,倒排後字串 目前是空串 傳給ch2,字串長度傳給n main 啊,看錯了,是單詞倒排不是整串倒排,你把...

簡單的C語言選擇題求詳解,一個簡單的C語言選擇題求詳解

全是錯誤的。a 雖然書寫格式沒有錯,但既然有空的,就得初始化,以使編譯器知道應該是幾。b 只可以靠近陣列名的那一個空著,就是說書寫格式都錯了。c 道理同b。d 除了靠近陣列名的可以空著,其他的都不能空著。c語言選擇題一個,求詳解 a 是對的,換行會看的更加清晰。define size 10 把siz...