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

時間 2021-10-17 04:59:00

1樓:

個人認為如此:

a=(1.0/3)*3;

1.0是浮點數,而3是整形數,所以對3進行隱式轉換到浮點型,得出的結果與3的浮點型數相乘,得1.0 。

b=3/2;

3和2都是整形,所以相除得1,餘1,而得出的整形結果是1,放進浮點型的結果裡,所以是1.0 。

c=(1/3)*3;

1和3都是整形,所以相除得0,而0*3=0,所以結果是0 。

2樓:慕mss斯

因為你計算的時候

a = 1.0 / 3 * 3 // float/int/int 結果用float型別

b = 3/2 // int/int 結果是int型別 3/2 int 型別結果就是1

最後一樣 int/int*int 1/3*3結果int型別 0

然後你列印的時候都是%f 所以是 1.000000 1.000000 0.000000

你先看下c語言型別轉換,下面是**,

如果不同型別資料進行計算的話,那需要把不同的型別都轉換成在其中級別最高的型別在計算!

3樓:匿名使用者

首先說一下,樓主要想達到預期的效果只需要把c=1/3*3 改為1.0/3*3

至於原因,就是涉及到整型和浮點型變數在記憶體中有關儲存位的知識了。簡單點說,1/3這個操作被系統預設為兩整型相除,得到的結果也是整型,所以1/3的值為0.333333333的整數部分,也就是0,後面0*3當然就是0了,而c是浮點型,所以顯示的結果是0.

00000了,

希望對樓主有幫助。

4樓:不可以語冰

① . 首先1.0/3=0.333333 0.333333*3=0.999999

編譯系統自動進製,你想想 1/3.0 = ? *3 = 1是不是這個道理

當然因為單精度所以後面1保留 6位

② . 3/2=1.5 ,沒錯但是"/ "在c語言中算出結果是取整數。相當於b=(int)3/2;

③ . 因為1/3 =0.3333..取整為0,但因為輸出格式是%f,所以後面保留六位是0.000000

不知道你懂沒有 希望能對你有所幫助

5樓:

第乙個,1.0/3,因為1.0是浮點型的,所以在運算的時候會自動轉換為浮點數運算,然後在乘以3.

其實1.0/3*3的結果有的時候可能是0.999999,這是因為在計算機中有些數是無法完全轉換為二進位制的,只能近似相等。

比如for(double i=9;i>=0;--i) 你在輸出 i ,很有可能得到 *.99999或者*.000001,

第二個,3/2是整數相除,會自動省略小數。如果想要得到1.5可以這樣(float)3/2或者變為3.0/2,

第三個,1/3是整數相除,得到0,所以再乘以任何東西都是0了。

建議你去看看c語言的資料型別轉換,很多都是隱式轉換,

6樓:提提的刀

(1.0/3)*3=0.333333.....*3 3/2 (1/3)*3=0*3 (都是求商,求余用「%」)

7樓:

除數和被除數都用浮點數

8樓:匿名使用者

看著

c語言中實型資料運算的問題!如圖:a=1.0/3*3b=3/2c=1/3*3為什麼產生這樣的結果

9樓:匿名使用者

樓主好像忘發圖了,但這段**絕對是編譯不了的。

咱們平時學數學用的書寫規範,和程式設計要求的書寫規範是有差別的1、平時乘號*可以省略,但是程式設計時*不能省。3b必須寫成3*b;如果有必要,應寫成(3*b)——這跟運算子的優先順序有關。

2、」a=1.0/3*3b=3/2c=1/3*3"……額的神哪,這也太有想象力了吧?"=「是賦值號,將右邊的值賦給左邊,樓主是要讓編譯器解方程?

你高估人家了...由於沒**,也沒具體說明,我也不清楚這玩意兒是什麼意思,只能講到這兒了。建議樓主不僅要仔細看書,還要多寫程式,寫錯了琢磨琢磨、試著改改,再錯再改,慢慢地你就找著門路了。

高手都是這麼煉成的

10樓:匿名使用者

可以這麼考慮!個人認為如此:

a=(1.0/3)*3;

1.0是浮點數,而3是整形數,所以對3進行隱式轉換到浮點型,得出的結果與3的浮點型數相乘,得1.0。

b=3/2;

3和2都是整形,所以相除得1,餘1,而得出的整形結果是1,放進浮點型的結果裡,所以是1.0。

c=(1/3)*3;

1和3都是整形,所以相除得0,而0*3=0,所以結果是0。

float a=2,b=4,h=3; (1/2)*(a+b)*h在c語言中結果為什麼是0

11樓:匿名使用者

1/2結果為0.

1和2為整型 結果也去整為0.

但是1.0/2為0.5 因為1.0是浮點型

[c語言]printf("%f\n",1.0/3*3)與printf("%f\n",1/3*3)計算結果為什麼不同?

12樓:網海1書生

1.0/3*3這是按浮點數進行計算,1.0/3*3=0.333333...*3=1

1/3*3這是按整數進行計算,1/3*3=0*3=0 (1/3的值會先取整,結果為0)

13樓:匿名使用者

1.0/3*3是實型運算,與你學過的數**算是一致的,輸出結果是1.000000

1/3*3是整型運算,1/3=0,0*3=0,輸出結果是0.000000

c語言的乙個程式中,a=1.0 為雙精度數,那a/3為什麼也是雙精度數呢?

14樓:慶韶容

a是雙精度浮點小數,也就是double型別,而3是int型,在電腦中,double佔8位,int型別佔4位,系統會隱式也就是自動轉換為型別更大的,以防止儲存資料出錯。a/3中,a是double型別,3是int型別,於是向上轉換為double,基本上所有的書都會對轉換這部分有介紹,樓主可查一下教材,應該在講儲存型別的那一章有,望採納

15樓:儲楊

在c語言中,只要有雙精度數參與運算,其結果就自動轉換成雙精度數!

16樓:leo十世

是前乙個數決定的,樓主可以自己嘗試一下其他運算。

17樓:小題來也

因為c語言要保持最大的精度

18樓:angel加油

為防止精度受損,c語言在編寫時規定的~

c語言中/與%的區別

19樓:水閏愛樹木

區別如複下表:

擴充套件資料具體區別制的例子:

bai1、c 語言輸入輸出du

printf(「a=%d,b=%d 」zhi,a,b);

scanf(「%d%d%d 」,&a,&b,&c);

2、vb 語言的輸入輸出:

inputbox(「x=」,」輸入 x 的值dao 」)print 「x=」;x

20樓:火箭羊科技文化傳媒

而且,這兩種運算子,還分為字首運算和字尾運算

如:int a=5;

a++; //字尾運算,表示a=a+1 = 5+1=6

a--; //字尾運算,表示a=a-1 = 6-1=5

--a; //字首運算,表示a=a-1 = 5-1=4

++a; //字首運算,表示a=a+1 = 4+1=5

以上單獨使用自增1或自減1運算子,字首運算和字尾運算沒有區別,其結果都是完成變數a的自加1或自減1

字首運算和字尾運算的區別在於:字首運算,先運算,再使用變數;字尾運算,先使用變數,再運算。如:

int a=5;

printf("a=%d\n", ++a ); //字首運算,先運算a=a+1=5+1=6,再使用變數a,輸出結果a=6

a=5; //重新賦值為5

printf("a=%d\n", a++ ); //字尾運算,先使用變數a,輸出結果a=5,再運算a=a+1=5+1=6

void main()

21樓:仁昌居士

c語言中->和

bai.的區別為:性du

質不同、zhi指向不同、訪問不同dao。

一、性專質不同

1、->:->是指向結構屬體成員運算子。

2、.:.是斷點符號,不屬於運算子。

二、指向不同

1、->:->所指向的是結構體或物件的首位址。

2、.:.所指向的是結構體或物件。

三、訪問不同

1、->:->的用處是使用乙個指向以便訪問結構體或物件其內成員。

2、.:.的用處是使用乙個指向以便訪問結構體或物件。

22樓:atm半夏螢光

vb與c語言的區別如下所示:

1、c語言是一門通用計算機程式語言,廣泛應內用於底層開發,c語言的設計目標是提供一容種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

2、vb是microsoft公司開發的一種通用的基於物件的程式語言,為結構化的、模組化的、物件導向的、包含協助開發環境的事件驅動為機制的視覺化程式語言,是一種可用於微軟自家產品開發的語言。

3、vb和c語言都是程式開發中的一種語言,c語言不支援視覺化程式設計,vb支援視覺化程式設計。

4、vb和c語言均可完成任何一種開發需求;對於介面製作,c語言會變得很繁瑣,vb則相對簡單快捷;vb語言的語法要求不嚴格,可不先宣告變數,c語言必須先宣告後使用。

5、vb是一種事件驅動的程式結構,c語言的程式必須從乙個main函式開始。

6、c語言它更高效,並且在嵌入式linux環境下支援更好,它的語言主要是以描述功能為主,而vb由於它更接近於指令碼的同時是物件導向的語言。

7、c語言支援指標,而vb不支援;c語言入門相對較難,vb則很容易入門,但後續的深入學習c語言會變得相對容易。

c語言中1.0/3*3為什麼等於1

23樓:褚利逢鵬

1.0/2*3=1.5

在c語言中

除數和被除數有乙個為浮點數時

結果就是浮點數

所以1.0/2=0.5

0.5*3=1.5

C語言中的基本運算問題,C語言中的基本運算問題

有些運算操作是要區分有符號與無符號的情況的,比如除法,取模運算其計算語意是不同的,具體來說,有符號的除法在x86平台上對應的彙編指令是idiv,而無符號的除法對應的則是div。而對於另外一些操作運算,則是不區分有符號與無符號的,比如,加法,減法,乘法運算。可以通過以下 測試 int main 雙目運...

關於浮點數在C語言中的儲存問題,C語言實型 浮點型 資料在記憶體中的存放形式

寫c 2.468f就可以。浮點數常量預設是double型。你直接寫2.468會強轉型。c語言實型 浮點型 資料在記憶體中的存放形式 實數分為float型和double型,它們分別對應ieee 754標準中的單精度浮點數和雙精度浮點數型別,在記憶體中的儲存形式遵守ieee 754浮點數標準。以floa...

c語言中的字元型的運算,在C語言中,要求運算數必須是整型或字元型的運算子是()。

include include include using namespace std void k add string a,string b,int k 將長的字串放在前面 if a.size b.size string temp a a b b temp 對源字串進行翻轉 reverse a....