為什麼c語言表示式中512等於

2021-03-06 22:32:20 字數 3241 閱讀 5814

1樓:匿名使用者

5+1/2在c語言中確實等於5。

原因如下:

該符號同時具有整數除和實數除的功能,當兩個運算物件都是整數就做整數除,有一個運算物件是浮點數時就執行實數除。

所謂整數除就是捨棄餘數,只留下商;因此5/2的結果是2,而5.0/2的結果是2.5。

顯然1/2是整數除,商位0,所以5+0還是等於5。

2樓:匿名使用者

1/2為整除,值為零,所以式子等價於5+0,結果為5 。

之所以會出現這樣的情況是因為1和2都為整型數,直接相除其結果也為整形,而0.5轉換為整形後為0,所以最終值為5。如果想要得到5.

5這個值的話可以通過一個格式的自動轉換過程,讓除數與被除數中的一個成為浮點型資料,即5 + 1.0 / 2 或者 5 + 1 / 2.0。

3樓:匿名使用者

這個四則運算中,除法的優先順序是高於加法的,先做1/2,由於1和2都是整數,所以除法的結果也是整型,為0. 0+5=5,所以最後的結果是5

4樓:我若在床邊

5+1/2

1/2優先順序高先執行,執行後因為1和2被系統預設整形,隱式轉換0.5->0

5+0=5

5樓:張新香

在這裡5、2、1都是整型、、1/2=0.5,變成整型的話就是0,所以結果為5、、

6樓:匿名使用者

都是整型的,5+1.0/2就可以了..

c語言 表示式3.5+1/2的計算結果是 3.5 為什麼?

7樓:匿名使用者

這是因為表示式1/2的結果為0(整型0)。因此表示式3.5+1/2的結果為3.5(double型別)

表示式exp:3.5+1/2 由以下兩個表示式exp1和exp2構成:

exp=exp1+exp2=3.5+1/2

(1)exp1: 3.5,這是一個常數表示式,表示式的值為3.5,值型別為double;

(2)exp2: 1/2,這個表示式中常數1和2的型別為int。表示式的值為0,值的型別是int。

(3)exp的最終結果為3.5,值的型別為double

8樓:

對於表示式「3.5+1/2」,先看看計算順序:

根據四合運算計算順序,首先計算除法"1/2"獲得結果result;

然後再計算加法「3.5+result」。

在第一步的計算中,除數"1"和被除數"2"在做計算時編譯器預設是int型別,所以計算結果也會是int型別。而對於int型別,「1/2」的結果是「0」,所以:3.

5+1/2 = 3.5 + 0 = 3.5

想要獲得正確的結果在寫表示式時應該加入浮點數標識(加小數點),讓編譯器按照浮點數的方式計算,正確的表示式是:

3.5 + 1.0/2.0 = 3.5 + 0.5 = 4.0

9樓:叫我文小浠

首先 1 和 2在該表示式中預設為int型數其次 1/2 兩個整型數相運算是隻能得到int型數,在這裡表現為只得到該除法的商,商為0

再者,c語言中運算是向上相容的順序為:char=short

所以你可以大概瞭解到你最後的結果為3.5,而不是4了,也不是3。

10樓:匿名使用者

在兩個運算元相同的時候是不會轉化的

就是說 整形 除以 整形 結果 也是整形

只要兩個運算元不一致的時候才會向高階別的轉向,如 整形 -> 浮點3.5 + 1/2

3.5 + 1/2.0

試試這兩種形式

11樓:水晶葡萄

因為1/2的結果是0。

這個是c語言型別處理的問題。1/2編譯器處理的時候會認為1和2都是整數,而整數與整數相除結果還是整數,並且是向下取整的整數。雖然3.5是浮點數,但是1/2是先計算的。

如果想要1/2結果是0.5就需要將式子轉化為浮點數的除法,方法有兩種:

將1寫成1.0,比如1.0/2結果就是0.5。

將1強制轉化為浮點數,比如((float)1)/2結果也是0.5。

12樓:匿名使用者

轉換隻存在於加減之外的運算中。所以0.5被整形化為0了。

13樓:匿名使用者

1/2 的結果是 0 。

14樓:匿名使用者

1/2 算出來是等於零的 想要得到正確結果應該是1.0/2

c語言中表示式5/2的值為什麼是2啊

15樓:金色潛鳥

5 -- 整型

2 -- 整型

5/2 -- c語言 預設 整型/整型 按整除 得整型。所以是 2就算是 (float)(5/2) ,也得 2, 化 float 2.0

若寫 5. / 2 或 5 / 2. 就得 2.5c / c++ 語言 的「遊戲」規則。初學者常被搞昏。

16樓:匿名使用者

因為是整數 除以整數 型別都是int 你可以試一試把它改為5.0/2 或者5/2.0~~

17樓:觀音大_溼

取整了 要想得到2.5 可以強轉成float 或者寫錯 5*1.0/2

18樓:乙夫良雪帆

這道題沒有明確的答案,我用了win

tc和vc++

6.0來運算,答案分別

6和5,所以覺得應該不是優先順序別的問題,是編輯器的問題。這些問題好比是++和--這些問題,都是得看什麼編輯器的。

c語言中,為什麼表示式1/2的值為0,5/2的值為2?

19樓:天雨下凡

c語言中,整數相除,結果還是整數,取整,不進行四捨五入,直接丟掉小數部分

數學中1/2=0.5,c語言取整為0,同理:

數學中5/2=2.5,c語言取整為2

20樓:

參與計算的都是整型數吧,結果也是整型

1/2=0.5轉為整型後小數部分被丟掉,整數部分為0

5/2=2.5轉為整型後小數部分被丟掉,整數部分為2

c語言表示式0的邏輯值是什麼,c語言,表示式( x 0)的邏輯值是什麼?

x 0,的優先順序高,所以相當於 x 0。題目沒說x是什麼型別,暫且當成整型吧。c的邏輯運算中,把0當做false,非0當做true。表示式進一步解釋為 x false。於是 x 的結果就是,如果x是0,則 x 是true 否則 x 是false。所以,如果x是0,x false的結果是false ...

C語言表示式2510的值為什麼不是

2 5 0 0 10 0 學術上有抄這樣的符 號襲 5 2 這樣的符號是指取下限。所以,對5 2取下限,結果2.5超過2的部分被捨去,即 5 2 2.c語言裡德除法也採用了類似的取下限的方式。所以2 5 10 2 5 10 0 10 0 暈,才5分 第一項21 4取餘數為1,2 4由於c語言為整除為...

當a5,b8時,c語言表示式52a1b2的

是c語言特色操作符 a b等效於a a b 類似的還有 等等。算數表達符的優先順序級大於比較運算子,而且比較運算子得到的結果是真 假或1 0。所以先做算數表示式得到3 4 答案為1,5 2 a 1 的值為false,也就是00 b 2的值為true,也就是1最後結果為1 在c語言中,若有定義 int...