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

2021-03-06 23:23:29 字數 3515 閱讀 7269

1樓:匿名使用者

首先,你得明白什麼是資料型別?我們知道資料在記憶體中儲存都是按照位元組為單位儲存的,如何來表示一個整形或一個字元型等等資料,這就要用到資料型別了,所以,所謂的資料型別,其實就是用來標識資料佔據幾個位元組等資訊引數的,系統資料型別很好理解,自定義的資料型別(如用struct或class來定義的),其實也是一樣的,它裡面包含了各個簡單資料型別的長度和位置。 其次,c++中的資料是「強型別」的,也就是說資料在進行賦值時,型別必須匹配才行,這很容易理解,如果兩個資料的在記憶體中的長度都不一致,又怎麼能賦值呢,即使長度一致,如果內部的小單位有偏移,其實也是不能賦值的,這就是資料型別要匹配的原因了,呵呵,例如:

struct;和int型其實長度是一致的,都是4個位元組,但其內部每個位元組表示的具體意義是不一樣的。 當然c++也提供了資料轉換的機制,自動轉換和強制轉換。c++的內部轉換是char/short->int/long/float->double,也就是說將一個char值賦值給一個int型的,不需要你做操作,系統會自動轉換,這樣的轉換時不會丟失資料的,但如果反過來,編譯器就會報錯了,原因很簡單,資料有可能丟失了,比如將一個double型別的資料轉換為int型,就丟失了記憶體中一半的資料,當然如果丟失的那部分是無意義的,這是的強制轉換是有效的,如將int型的(-127,127)之間的資料轉換為char型是有效的。

資料在作為函式引數傳遞的時候,也必須匹配型別,原因很簡單,函式引數的傳遞是通過棧來完成的,如果引數型別不一致,會導致棧裡的資料紊亂,傳遞的引數錯位,而導致錯誤。例如你給pow求冪函式,原型是double pow(double d,int i);如果你傳入的引數是(int,int),這顯然在資料型別轉換下是可行的;但如果你傳的是(double,double)這時的第二個引數就編譯不通過,如果強制轉換,編譯通過,但資料有可能會丟失了。

2樓:匿名使用者

理論上所有資料型別之間都可以運算,包括所有運算。資料在記憶體都是以二進位制數字存在,不管是加減乘除,還是左移右移都沒問題。

3樓:匿名使用者

除了指標型別(陣列類),其他的基礎型別什麼運算都可以啊,就是算完後賦值型別要對

c語言中不同資料型別的資料在運算時採用的規則有哪些?

4樓:匿名使用者

不同資料型別之bai

間的轉換

有du2種方式:隱式轉換和顯zhi式轉換dao。

隱式轉換指的是默

專認做的一些轉換式,比如屬整形和實型做混合運算(這裡我說的運算是合法的運算,不會是取餘這樣對運算元有資料型別要求的運算),得到的結果是自動由精度低的或佔位數低的資料型別向高的資料型別做轉換,也就是上述問題得到的結果是實型。

顯示轉換:指的是使用強制型別轉換運算子來進行強制的結果型別轉換,這是人為的得到想要的型別的一種方法。

你所描述的不同資料型別的資料在運算時,採取的多是隱式轉換。

c語言中不同資料型別的資料在運算時採用的規則有哪些 5

5樓:匿名使用者

不同資料型別之間的轉換有2種方式:隱式轉換和顯式轉換。

隱式轉換指的是預設做的一些轉換式,比如整形和實型做混合運算(這裡我說的運算是合法的運算,不會是取餘這樣對運算元有資料型別要求的運算),得到的結果是自動由精度低的或佔位數低的資料型別向高的資料型別做轉換,也就是上述問題得到的結果是實型。

顯示轉換:指的是使用強制型別轉換運算子來進行強制的結果型別轉換,這是人為的得到想要的型別的一種方法。

你所描述的不同資料型別的資料在運算時,採取的多是隱式轉換。

6樓:匿名使用者

當然是相同大小資料的等位運算了,參見組合語言

7樓:

這個在一般的c語言教程裡面都有介紹的 譚老大的教材裡面說的很清楚

8樓:湯曼華袁秋

1、賦值運算中如果賦值號「=」兩邊的資料型別不同,賦值號右邊的型別轉換為左邊的型別,這種轉換是截斷型的轉換,不會四捨五入。

比如i是整型變數,則i=2.99;結果i的值為2直接捨去

#include

intmain()

測試結果為2.

c語言中各種資料型別有什麼區別?

9樓:匿名使用者

1、資料計算型別不同。基本資料型別分為三類:整數型(定點型)、實數型(浮點型)和字元型。

除了基本資料型別,還有構造型別(陣列、結構體、共用體、列舉型別)、指標型別、空型別void。

3、不同資料型別佔用記憶體的大小不同。short佔2byte,int佔4byte,long佔4byte,float佔2byte,double佔8byte,char佔1byte(不同的平臺可能佔用記憶體大小不一樣,具體的可以用sizeof 測試下)。

10樓:匿名使用者

1、c語言中資料型別分類如下:

2、最主要的區別就是資料計算型別不同。

c語言中基本資料型別分為三類:整數型(定點型)、實數型(浮點型)和字元型。當然,除了基本資料型別,還有構造型別(陣列、結構體、共用體、列舉型別)、指標型別、空型別void。

最常見的基本資料型別,也就是整數型、浮點型和字元型。

不同資料型別佔用記憶體的大小。short佔2byte,int佔4byte,long佔4byte,float佔2byte,double佔8byte,char佔1byte(不同的平臺可能佔用記憶體大小不一樣,具體的可以用sizeof測試下)。

11樓:韓蕭_寒

告訴計算機所要儲存運算的是什麼型別的數,例如你定義 int m; 那麼 printf("m=%d",1/10); 輸出地結果會是0,因為int是整型,而如果是float m,那麼結果就會輸出0.1,float是浮點型。

12樓:愛在沒理那

肯定有不同點的吧,資料結構不一樣的,執行需要也不同的啊

13樓:匿名使用者

基本型別有整形,實型(浮點型)分單精度型和雙精度型,字元型和列舉型別;構造型別有陣列型別、結構體型別、共用體型別;指標型別,空型別

14樓:匿名使用者

在變數中如果沒有關鍵字的話與儲存長度有關

如果前面還加了其他關鍵字則還會與儲存的位置相關

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

15樓:小蔥愛石頭

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

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

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

c語言中可以進行位運算的資料型別有什麼?

16樓:匿名使用者

float 和double不可以,剩下的幾個都行

17樓:李

只能用於整型運算元,即char,short,int,long型別

c語言資料型別如何轉換C語言資料型別如何轉換?

不是有強制型別 轉換嗎?強制型別轉換 強制型別轉換 當運算元的型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。強制型別轉換具有兩種形式,稱為顯式強制轉換和隱式強制型別轉換。1 顯式強制型別轉換 顯式強制型別轉換需要使用強制型別轉換運算子,格式如下 type 或 ...

C語言中資料型別變換應該怎樣變換

隱式轉換就是 copy不帶轉換型別的轉換,如int轉float你可以這樣子float a int b 4 a b就是隱式轉換,而a float b就是顯示轉換。區別在於當向下轉換時如果不顯示轉換就會有問題,如float a 4.5 int b a 這裡就可能報錯,因為int可以自動上升為float,...

關於c語言資料型別的問題,關於C語言資料型別的問題

因為有的資料比較長,比如1111111111111111,這樣用int就存不下了,要用長整型來儲存了 可能強制轉換時要用到吧 這只是我的觀點 long long hello 1 2147483647 cout hello endl cout int max endl hello右邊表示式 是1 in...