為什麼程式執行結果是27,不是28了

時間 2022-03-12 20:40:19

1樓:a雨塵

m/2的值是7/2=3 並不是3.5n*a/b的值是4*38.4/6.4=24.000000 因為有浮點型資料參與運算,結果要保持精度。

1/2的值是0 不是0.5

定義的變數x為雙精度型 要求輸出為%lf 無論怎樣,其結果必然轉換為長浮點型資料

結果 3 + 24.000000 + 0 = 27.000000注意:整型常量與整型常量運算的值為整型常量浮點型常量與整型常量運算的值為浮點型

2樓:匿名使用者

m是整型資料,m/2會按整除操作,m=7時,m/2=3n*a/b = 4*38.4/6.4=241/2同樣會按整除操作,得0

故結果是27

想得28,可如下修改:

x=m/2.0 +n*a/b+1.0/2;

3樓:

m/2的型別是整形結果是3

1/2的型別也是,結果是0;點.

n*a/b裡的a是浮點,所以結果是浮.

3+24.0+0==27.0+0==27.000000是這個計算順序.這個涉及c語言型別提升問題.請查相關資料.

要想得到精確的結果請都用統一的double型別.

4樓:

這個問題主要是因為double 和float型別做除法的時候  如果你的除數和被除數都是整數,那麼他得到的答案也都是整數。   所以你要使用**

x=m/2.0 +n*a/b+1.0/2;

下列程式執行後的輸出結果是

1 3dowhile 型,必定執行一次,所以第一次迴圈,一定會進入這時 printf 2d a 3 等價於 a a 3 因為a初值為4,所以a 1 printf 2d a 輸出1while a 等價 while a 1 等價 while 0 因為 0的值為 true 所以再迴圈1次 a a 3 等價...

有以下程式,程式執行後輸出結果是include《stdio h》mainint i,n 0 for i

尾爽巴澤 結果是31,因為你的程式裡面case 後面都沒有break語句跳出,所以會依次執行下去,知道迴圈結束,具體來說就是當i 1的時候先執行case1,在執行case2,在執行default 此時a 8 然後執行i i 2,然後執行case2,在執行default 此時a先加3在加5就等於16,...

下面程式輸出結果是,下面程式輸出結果是什麼?

韋榮軒喜昱 當a 14時執行do while迴圈 由於開始時對a賦值10,所以輸出a 10,y 0 堵丹彤牟萱 輸出為 a 16 y 60,分析如下 main while a 14 這裡的迴圈條件不是判斷是否滿足a等於14,而是一個賦值語句,每次執行到這裡都會將14賦值給a,因此這裡的迴圈條件始終都...