c 資料型別回顧

2022-09-05 16:45:15 字數 3970 閱讀 1822

c++的基本基本型別在下表(下表中的各型別長度和取值範圍以32位處理器為準)

型別名長度(位元組)

取值範圍

bool

1flase,true

char

1-128~127

signed char

1-128~127

unsigned char

10~255

short(signed short)

2-32768~32767

unsigned short 

20~65535

int(signed int)

4-2147483648~2147483647

unsigned int

40~4294967295

long(signed long)

4-2147483648~2147483647-

unsigned long

40~4294967295

float

43.4*10-38~3.4*1038

double

81.7*10-308~1.7*10308

long double

81.7*10-308~1.7*10308

其中還有乙個寬字元型 ,它是由下面方式來的。

typedef short

int wchar_t;

其中用short修飾int時,short int表示短整型,佔2個位元組。此時int可以省略,而long int表示長整型,佔4個位元組,也可以省略int。

iso c++標準並沒有明確規定每種資料型別的位元組數與取值範圍。不同的編譯器對此會有不同的實現。面向32位的處理器通常將int和long兩種資料型別用4位元組表示,但一些面向64位的處理器,int用4位元組表示,long用8個位元組表示。因此,(unsigned)int 和unsigned long雖然在表中具有相同的取值範圍,但仍然是兩種不同的型別。

一般情況下,如果對乙個整數所佔位元組數和取值範圍沒有特殊要求,使用(unsigned)int 型為宜,因為他具有最高的處理效率。

注意1、typedef  型別

可以使用typedef為乙個已有的型別取乙個新的名字。下面是使用 typedef 定義乙個新型別的語法:

typedef type name
例如,下面的語句會告訴編譯器,feet 是 int 的另乙個名稱:

typedef int feet;
現在,下面的宣告是完全合法的,它建立了乙個整型變數 distance:

feet distance;
列舉型別(enumeration)是c++中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。如果乙個變數只有幾種可能的值,可以定義為列舉(enumeration)型別。所謂"列舉"是指將變數的值一一枚舉出來,變數的值只能在列舉出來的值的範圍內。

建立列舉,需要使用關鍵字enum。列舉型別的一般形式為:

enum

列舉名 列舉變數;

如果列舉沒有初始化, 即省掉"=整型常數"時, 則從第乙個識別符號開始。

例如,下面的**定義了乙個顏色列舉,變數 c 的型別為 color。最後,c 被賦值為 "blue"。

enum

color c;

c = blue;

預設情況下,第乙個名稱的值為 0,第二個名稱的值為 1,第三個名稱的值為 2,以此類推。但是,您也可以給名稱賦予乙個特殊的值,只需要新增乙個初始值即可。例如,在下面的列舉中,green 的值為 5。

enum color ;
在這裡,blue的值為 6,因為預設情況下,每個名稱都會比它前面乙個名稱大 1,但 red 的值依然為 0。

常量是指在程式執行的整個過程中其值始終不可改變的量,也就是直接使用符號表示的量。其中又可分為整型常量、實型常量、字元常量、字串常量、布林常量。需要注意的是實型常量,其中的指數形式可以為.123e-1,12.e2,1.e-3,但不能寫成e-3這種格式(e不區分大小寫,且e後面的數必須為整數)

實型常量的值預設為double型別,如果有字尾如

12.3f

該數為float型別

宣告乙個變數只是將變數名識別符號的有關資訊告述編譯器,是編譯器認識該識別符號,但是宣告並不一定引起記憶體的分配。而定義乙個變數意味著給變數分配記憶體空間,用於存放對應型別的資料,變數名就是對相應記憶體單元的命名。在c++中,大多數情況下,變數宣告也就是變數定義,只有宣告外部變數時例外。

auto儲存型別:採用堆疊方式分配記憶體空間,屬於暫時性儲存,其記憶體空間可以多次覆蓋使用。

register儲存型別:存放在通用暫存器中。

extern儲存型別:在所有函式和程式段中都可以引用。

使用const關鍵字來建立符號常量,常量被建立後其值就固定了,編譯器將不允許修改該常量的值。

const

int a = 20;

注意,應在宣告時對const進行初始化,如果在宣告常量時沒有提供值,則該常量的值將是不確定的,且無法修改。

運算子是一種告訴編譯器執行特定的數學或邏輯操作的符號。c++ 內建了豐富的運算子,並提供了以下型別的運算子:

字尾 () -> . ++ - -  

從左到右 

一元 + - ! ~ ++ - - (type)* & sizeof 

從右到左 

乘除 * / % 

從左到右 

加減 + - 

從左到右 

移位 << >> 

從左到右 

關係 < <= > >= 

從左到右 

相等 == != 

從左到右 

位與 and 

& 從左到右 

位異或 xor 

^ 從左到右 

位或 or 

| 從左到右 

邏輯與 and 

&& 從左到右 

邏輯或 or 

|| 從左到右 

條件 ?: 

從右到左 

賦值 = += -= *= /= %=>>= <<= &= ^= |= 

從右到左 

逗號 , 

從左到右 

--摘自《c語言程式設計實用問答》       

問題:如何記住運算子的15種優先順序和結合性?    

解答:c語言中運算子種模擬較繁多,優先順序有15種,結合性有兩種。    

如何記憶兩種結合性和15種優先順序?下面講述一種記憶方法。    

結合性有兩種,一種是自左至右,另一種是自右至左,大部分運算子的結合性是自左至右,只有單目運算子、三目運算子的賦值運算子的結合性自右至左。    

優先順序有15種。記憶方法如下:    

記住乙個最高的:構造型別的元素或成員以及小括號。    

記住乙個最低的:逗號運算子。    

剩餘的是

一、二、三、賦值。    

意思是單目、雙目、三目和賦值運算子。    

在諸多運算子中,又分為:    

算術、關係、邏輯。    

兩種位操作運算子中,移位運算子在算術運算子後邊,邏輯位運算子在邏輯運算子的前面。再細分如下:    

算術運算子分     *,/,%高於+,-。    

關係運算子中,〉,〉=,

邏輯運算子中,除了邏輯求反(!)是單目外,邏輯與(&&)高於邏輯或(||)。    

邏輯位運算子中,除了邏輯按位求反(~)外,按位與(&)高於按位半加(^),高於按位或(|)。    

這樣就將15種優先順序都記住了,再將記憶方法總結如下:    

去掉乙個最高的,去掉乙個最低的,剩下的是

一、二、三、賦值。雙目運算子中,順序為算術、關係和邏輯,移位和邏輯位插入其中。

c 回顧 1 4資料型別 佇列

用類實現乙個鏈式佇列,用於儲存銀行排隊資訊 姓名,年齡,身份證號 類似於棧,佇列也可以看作是有著特殊資料出入方式的鍊錶。實現的功能 如下 使用類實現乙個鏈式佇列,用於儲存銀行排隊資訊 姓名,年齡,身份證號 include pch.h include include using namespace s...

C語言基礎知識回顧 資料型別

系統 windows10家庭和學生版 環境 miccrosoft visual studio 2013 include include include intmain 使用字元陣列來表示 printf s n str char ch this is a c pragma printf s n n c...

day08資料型別 回顧

一 整型int 1.作用 記錄年齡,月份等 2.定義 age 18 底層實際上是執行了age int 18 3.型別轉換 純數字的字串能轉換成int,float型別能轉換成整型int 例 x 1.1 print type int x msg 1234 res int msg print type r...