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

2021-03-04 05:55:44 字數 1646 閱讀 6793

1樓:匿名使用者

再回來說下,你可以這樣進行檢測,看隱式轉換的問題還是溢位的問題:

typedef unsigned long long uint64;//最新的編譯器都支援這種用法吧,總之你找個能表示64位的longlong就行了.

//uint

cout << (uint64)iu + (uint)i << endl;

這裡先將i轉換成uint型,此時未溢位,然後加上轉換uint64(iu)的值,再將其提公升為uint64,因為原來已經為uint型,所以提公升為uint64時值不再改變,最後結果超出了uint的範圍,如果你再對最終結果進行(uint),得到的答案你應該知道了.

------------------

溢位問題.

i=-8,轉化為uint型後,為2^32-8,再加上個uint(10),結果為:

2^32+2,溢位後,結果為2.

你只考慮到乙個很大的正數,卻沒有考慮到uint範圍的問題!

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

2樓:匿名使用者

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

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

c語言中不同型別的資料能否進行混合運算?如果能,以何種規則進行?

3樓:小蔥愛石頭

可以,強制復轉換就行,制int('a')就將

baichar 型轉換成int型,還有就是可以利用du一些函zhi

數進行轉換,如itoa()將daoint型轉換成char型,atof()將char型轉換成float型等等,很多這種函式,可以上網查一下

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

4樓:匿名使用者

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

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

5樓:匿名使用者

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

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

6樓:匿名使用者

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

7樓:匿名使用者

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

8樓:淡振梅翟培

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

如果你想把這弄成double那就

double

c;就行了

順便說下

你少了庫函式

#include

"stdio.h"

c語言中各資料型別不能進行哪些運算?

首先,你得明白什麼是資料型別?我們知道資料在記憶體中儲存都是按照位元組為單位儲存的,如何來表示乙個整形或乙個字元型等等資料,這就要用到資料型別了,所以,所謂的資料型別,其實就是用來標識資料佔據幾個位元組等資訊引數的,系統資料型別很好理解,自定義的資料型別 如用struct或class來定義的 其實也...

C語言中不同資料型別在記憶體中所佔據的位元組大小

型別 位元組 char 1short int 2int 2 tc 4 vc long 4float 4double 8long double 10 char 1個位元組 int 2個位元組 16位系統 4個位元組 32位系統 float 8個位元組 自定義型別注意記憶體對齊 printf d siz...

C的基本資料型別包括哪些,C語言中基本資料型別包括哪些

語言包含5個基本資料copy 型別 void,int,float,double,和 char.c 定義了另外兩個基本資料型別 bool 和 wchar t.一些基本資料型別能夠被 signed,unsigned,short,和 long 修飾 所以short,long等等都不算基本資料型別。這是書上...