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就可以了.. 關係運算子 運算順序自左往右,所以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語言運算規則,檢查左... 它等價於 表示式 i j 執行完畢再 分別執行 i 自增 1,和 j 自增 1.i j 是不正確的內表示式,因為 它被理解成容 i j 而 只能用於左值。如果 表示式 寫成 i j 那麼是正確的,先執行 i 自增 1,和 j 自增 1,然後成為 表示式 i j i j 正確。c語言中i 和j 分別是... 這個結果很好啊,無限趨向0了,如果你要好看一點兒,可以int強制轉換一下 應該是你最初沒有給這個double資料賦初值吧,如沒有賦初值的話,你的運算結果就很可能是上面的結果。因為在你定義這個double資料的時候 未賦初值時 此時的這個資料是個隨機數。你把你寫的 發過來。c 中double型別的0乘...C語言中表示式105的值是,C語言表示式105的值是
ij和ij哪個是正確的c語言表示式
c中double資料的表示式計算結果為0但是