c 程式設計之資料型別

2021-07-22 05:53:11 字數 2760 閱讀 1082

c++定義了表示整數、浮點數、字元和布林值以及void的基本資料型別,

算術型別的儲存空間與機器有關,

因為機器位數不同,這些型別所能表示的最大(最小)值也因機器的不同而有所不同。

型別+含義+最小儲存空間如下:

bool   布林型

char   字元型  8位

wchar_t  寬字元型  16位

short  短整型  16位

int   整型  16位

long  長整型  32位

float  單精度浮點型  6為有效數字

double  雙精度浮點型  16位有效數字

long double  擴充套件精度浮點型  16位有效數字

具體分析如下:

1、整數

一般認為

short ,

int  ,

long為表示整數的型別;

一般,short

型別為半個機器字長

,int

型別為乙個機器字長,而

long

型別定義為不小於int型別,long long型別為8個位元組。

使用sizeof來看一下他們的結果:

cout << sizeof(short) << endl;

cout << sizeof(int) << endl;

cout << sizeof(long) << endl;

cout << sizeof(long long) << endl;

在當前電腦編譯器下為: 2,4,4,8

因此,在當前編譯器下,使用int和long是沒有區別的。在使用時盡可能使用最合適的型別,short的使用可以減少儲存空間,int的使用可以加快程式處理速度(乙個機器字長),long long的使用是在int範圍不足以表示時使用

unsigned int與int——在一起操作時,都會轉換為無符號數,如下:

unsigned int a = 100;

signed int b = -130;

if (a < b)

printf("%u", b);

輸出為: 4294967166    。在運算中,無符號數優先順序要高於有符號數。

2、浮點數

浮點數常用的為 float,double與long double;具體使用需要根據編譯器處理結果而定。

使用sizeof來看一下他們的結果:

cout << sizeof(float) << endl;

cout << sizeof(double) << endl;

cout << sizeof(long double) << endl;

在當前電腦編譯器下為: 4,8,8

float與double的區別在於精度的不同,double精度高,有效位為16位,float精度為7位。

例如,在如下的example中的輸出:

float l1 = 100.22222222222;

double l2 = 100.222222222222;

printf("%0.11f\n", l1);//輸出為100.22222137451

printf("%0.11f\n", l2);//輸出為100.22222222222

在高位機的某些處理器中,

long double的大小可能為16位元組,這個時候使用long double將得到更準確的精度。

在程式中,精度越高,處理器處理資料花費時間越多,程式執行速度越慢。

3、字元

字元有 char、wchar_t、char16_t、char32_t ;這些型別與字符集有關係,涉及unicode,utf-8,utf-16等,可通過一下鏈結來了解字元的出現及意義:

@于洋的經典論述  ————講述了什麼是字符集以及字符集是如何出現的,使用字符集的必要性

4、bool值

判斷true與false的型別,可以認為ture就是1,false就是0.

cout << false << endl;	//輸出為0

cout << true << endl; //輸出為1

5、void型別

void的字面意思是「無型別」,void *則為「無型別指標」,void *可以指向任何型別的資料。

使用void的意義在於:

對函式返回的限定;

對函式引數的限定

1、對於有些編輯器來說,不定義函式返回值是可編譯的。使用void可增強**的嚴謹性與可讀性

test()

在某些編譯器下是可編譯的... ... ;而 test(2)在某些編譯器下是可執行的。 因此 int test(void) 的定義是必要的

2、注意void指標

按照ansi標準,不能對void指標進行演算法操作,即

void * pvoid;

pvoid++;

是不合法的。

但是gnu標準則不一樣,它指定void *的演算法操作與char *一致。因此,使用 void *pvoid;(char*)pvoid++來實現相容是必要的

void在c語言庫中的經典使用:

void *memcpy(void *dest, const void *src, size_t n); //記憶體複製函式

任何型別的指標都可以傳入memcpy中,而memcpy只是負責把src那一塊的儲存複製到dest區域中,複製本身與資料型別無關

學習Linux C程式設計之資料型別

一 變數與常量 1.變數 區域性變數 在函式內定義說明,作用域為函式內,離開函式再呼叫即為非法。注意 1.主函式定義主函式用,不能被其他函式用,主函式也不能用其他函式定義變數。2.形參屬於被調函式區域性變數,實參屬於主調函式區域性變數。3.允許不同函式使用相同變數名。4.復合語句可定義變數,作用域在...

《js高階程式設計》之資料型別概覽

基本概念 js有五種簡單資料型別,也稱基本資料型別 undefined null boolean number和string 一種複雜資料型別也稱引用型別,裡面包含的 function array date 分類1.undefined在使用var宣告變數宣告但未對其加以初始化時,值為undefine...

《C程式語言》 資料型別

作為乙個初學者,當在一次,看到這些繁瑣的東西時,我實在是不想看,但還是努力克制自己,靜下心來,將它又看了一遍!1.c語言中的變數命名 識別符號 規則 只能由 字母,數字,下劃線3 種字元組成,且第乙個字元不能為數字 可以為 字母 或下劃線 下劃線 被看成是字母,通常用於命名較長的變數名 注意 由於庫...