c語言表示式3512的計算結果是35為什麼

2021-03-07 21:50:31 字數 3019 閱讀 6893

1樓:匿名使用者

這是因為表示式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

2樓:

對於表示式「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

3樓:叫我文小浠

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

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

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

4樓:匿名使用者

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

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

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

3.5 + 1/2.0

試試這兩種形式

5樓:水晶葡萄

因為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。

6樓:匿名使用者

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

7樓:匿名使用者

1/2 的結果是 0 。

8樓:匿名使用者

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

以下c語言表示式中與代數式1/2(a+b)h計算結果不相符的是?

9樓:匿名使用者

lz您好,我想應該選擇答案b在c語言中「/」號的兩個運算元都為整數的話,結果為整數,其中任何乙個為實數的話,結果為實數,如果變數a,b,h定義為實數,答案a,c,d都沒有問題。只要答案b 中(1/2)的結果為零,所以最後的結果也為零。如果我的解答能使您滿意,請給我好評,這將鼓勵我更好的為其他網友解答,謝謝!

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

10樓:匿名使用者

整數除法,0.5捨棄小數,就是0了,如果想得到0.5,那麼在c語言中可以這樣寫1.0/2

這樣就是浮點數除法了

11樓:匿名使用者

等於6.為什麼我寫在下面

你有書的話查最後面的優先值表和結合性.記 住有些是從右往左算的

12樓:匿名使用者

以為兩旁都是整數

所以結果為整數

捨棄小數

13樓:匿名使用者

對的...

int

若1.0/2=0.5

為什麼c語言表示式中 5+1/2 等於5

14樓:匿名使用者

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

原因如下:

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

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

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

15樓:匿名使用者

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

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

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

16樓:匿名使用者

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

17樓:我若在床邊

5+1/2

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

5+0=5

18樓:張新香

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

19樓:匿名使用者

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

C語言中表示式105的值是,C語言表示式105的值是

關係運算子 運算順序自左往右,所以1 0 為0,0 5為1。所以表示式的值為1。根據運算子表,是從左往右結合的。先看1 0是假,返回0。原式就變成 0 5,是真,返回1 所以結果就是 1。值是1,1 0為假 值為0 0 5為真 值為1 c語言 表示式1 0 5的值是 是1。根據c語言運算規則,檢查左...

ij和ij哪個是正確的c語言表示式

它等價於 表示式 i j 執行完畢再 分別執行 i 自增 1,和 j 自增 1.i j 是不正確的內表示式,因為 它被理解成容 i j 而 只能用於左值。如果 表示式 寫成 i j 那麼是正確的,先執行 i 自增 1,和 j 自增 1,然後成為 表示式 i j i j 正確。c語言中i 和j 分別是...

c中double資料的表示式計算結果為0但是

這個結果很好啊,無限趨向0了,如果你要好看一點兒,可以int強制轉換一下 應該是你最初沒有給這個double資料賦初值吧,如沒有賦初值的話,你的運算結果就很可能是上面的結果。因為在你定義這個double資料的時候 未賦初值時 此時的這個資料是個隨機數。你把你寫的 發過來。c 中double型別的0乘...