C語言中,各類數值型資料間的混合運算的問題

2021-04-20 03:05:48 字數 3215 閱讀 9605

1樓:匿名使用者

從巨集觀上覆看,這個式子

制可以簡化為a+b+c-d這樣的格式,編譯時bai候差不多是這du樣個過程:

從左向右掃瞄zhi,先讀入10,再讀入+,接著讀入'a',注意此時不能計算,因為後面可能還有更高階別的運算子(比如10 + 'a' * 20...),接著再讀入乙個+,因為這dao個+和前乙個+的運算子優先順序一致,並且同級別的+的運算次序是從左向右(例如a+b+c+d,如果不考慮速算或者加法的交換律,這個準確的計算次序一定是((a+b)+c)+d,其他同級別的算術運算子結合性也是一樣的),不管後面的表示式是什麼樣的,這裡的第乙個+肯定可以計算出結果出來了,因此先計算出10 +'a'為107

打個比方說:雖然原則上先乘除後加減,如果給定乙個很長的混合表示式子,一般而言,大多是人也覺得沒有那麼機械死板地去,那個區域性可以得出結果來,一定會用中間結果去簡化

2樓:匿名使用者

我同意chiconysun的說法,執行的時候從左往右讀入資料和運算子專的到當前操作符的後一屬個運算子為止,比較優先順序來決定運算順序。這是對於混合運算的規則,但我不清楚這是普遍遵循的規則還是和編譯器有關。

用實際程式來驗證:

執行int i, j; //未進行初始化

int x = i + 1 + 3 * j; //關於 i + 1 和 3 * j 哪一項先進行運算

執行時檢測到錯誤「變數 i 未被初始化的情況下被使用」,可以從中看出是 i + 1 先於 3 * j 進行運算。(否則就會報出變數 j 的錯誤資訊。)

3樓:匿名使用者

這是譚浩強的《c程式設計》(第三版)的第54頁裡面寫的。誰知道如何解答呢?謝謝。

c語言中各類數值型資料間的混合運算

4樓:匿名使用者

表示式裡面只要bai有dudouble的自動都轉換成double的做運算,但zhic因為dao定義成int型別的了,內所以c=a+b 即使a,b都是容double或者float型別的,也會強制轉換成int,因為c是int的。相當於 c = int(1237.00),c的型別不會變的。

即使你的c宣告成float了,c的值也賦對了,但你最後printf的時候因為用的是%d,也一樣會輸出整數型別,因此要用%f。

簡單的辦法,可以直接寫printf("%f",a+b);就能得到你需要的結果了,c不需要。如果一定要的話,宣告成double或者float型別的。

5樓:匿名使用者

%d是十進位制整數的英文所寫,不是double的英文。

c語言中的各類數值型資料的混合運算具體的的計算方法 5

6樓:匿名使用者

搞清楚兩件事即可:

1.資料運算的優先順序

2.資料運算的強制轉換

7樓:泡泡愛亦菲

本來想打抄的,可是沒有下bai面**

du講的清楚

建議你zhi看看這dao個

關於c語言不同資料型別的數混合運算的問題

8樓:西瓜霜

你的 s=1/n是取整運算吧,1/2的整數部分當然是0了。而且你輸出時浮點型資料,所以s結果是0.00000

9樓:匿名使用者

不能,會自動轉化,將s=1/n,改為s=1.0/n

關於c語言中各型別資料間的混合運算

10樓:匿名使用者

兩種不同型別的數運算的時候,根據包容性,將低階範圍的轉換成高範圍的,將小的轉換為大的。這樣才能保證結果更正確。比如將單精度轉換成雙精度,將short轉換為long等。

所以,結果是雙精度的。如果結果儲存到單精度的變數,將會有乙個warning的編譯警告。

11樓:匿名使用者

這個問題其實是基礎問題。 兩個單精度運算的話,系統部會轉換成雙精度資料再進行運算。而是直接進行運算。

得出的資料結果是單精度。 如果是一單一雙的話,就會報錯。 如果是2個雙精度的話,結果是雙精度

12樓:匿名使用者

樓主記住乙個規則就行了:在計算的時候,系統把所有的資料,轉化成本表示式中精度最高的型別。

13樓:匿名使用者

不會轉化,如果是一單一雙系統會自動產生乙個雙精度的結果

14樓:淡振梅翟培

intc;c的輸出型別就是整型.沒有其他

如果你想把這弄成double那就

double

c;就行了

順便說下

你少了庫函式

#include

"stdio.h"

c語言 不同資料型別間的混合運算

15樓:匿名使用者

c語言裡 不同資料型別間的混合運算會強制轉換的```如6.0/5``結果必然向float型轉換```比如char short型參與運算都是先轉為int型`float轉為double型

int double混合運算時轉為double型都是向著占用較大的方向轉換``使適用範圍也更大`````書上應該說的比較詳細了 `呵呵`

c語言試題。。。各種型別資料的混合運算如圖,求幫我解釋下為什麼結果是 c1=49 z1=35

16樓:

<1>.a,b為整型

bai值du,a/b運算結果只能是整型值4;4x9得36;

zhia%b得13;13+36得49賦值給整dao型的c1<2>.42.6/28.3+(42.6+28.3)/2-1結果為35.95530,float保留6位小

回數;<3>a+x中int型別答的a被**轉換為float型別參與運算,輸出格式為%f,則結果保留6位小數,35+42.63=77.630000

<4>首先a被轉換為float型別參與運算,按float型別輸出,保留6位小數,結果為1.218000

17樓:匿名使用者

這個沒什麼可解釋的吧,參與運算的是整數,就是整數運算;參與運算的版是浮點數權,就是浮點數運算。

c1式子中,都是整數,運算結果都是整數運算的結果,z式子中都是浮點數運算。

後面兩個,運算中有整數也有浮點數,就是浮點數運算。

c語言中float型資料表示的最大數字到底是多少翱

c語言中float型資料表示的最大數字為3 402823e38。float資料型別用於儲存單精度浮點數。回具有4個位元組,包括一答個符號位 乙個8位二進位制指數和乙個23位尾數。由於尾數的高順序位始終為1,因此它不是以數字形式儲存的。此表示形式為float型別,提供了乙個在 3 402823e38到...

什麼叫數值型字串,C語言中,數字字串和數值型資料有什麼區別

數值型字串我們可以理解為 乙個string型的字串中 裝有int型的數值 這時 內候 string型的字串就叫做容 數值型字串。舉例 23 23 前者加了兩個引號因此是string型別的且裡面的值是int型的 所以是數值型字串 而後者直接就是int型的 應該就是型別為字串,內容是數值吧,如 1234...

1 0 3 3 c語言的問題,C語言中實型資料運算的問題!如圖 a 1 0 3 3b 3 2c 1 3 3為什麼產生這樣的結果

這個問題bai是關於不同型別du資料間混合運算的問題zhi,由於1.0是浮點dao型,回所以在計算時,答 1.0,3 被轉換為double型,即得到的結果是double型得到的結果是0.999999999999999,有 15位有效數字在輸出時,用 f格式,只輸出6位有效數字,所以結果輸出1.000...