首頁 > 軟體

適合初學者的C語言資料型別的講解

2022-04-09 19:00:44

之前說過寫程式碼是為了解決生活中的問題,比如購物。

假設我們要買一本書,它的價格是10.5,是個小數,也可以是一個整數10,它的書名是鋼鐵是怎樣煉成的,是一組字串,就像svli@gikvw這些,裡面每個稱為字元。

我們要去用c語言來去儲存這些資訊呢,在c語言裡面為了能夠描述這些型別。

就把小數抽象出來一個資料型別,叫浮點型

把整數抽象出來一個資料型別,叫整型(就是上一個部落格里面的int)

把字元抽象出來一個資料型別,就叫字元

 10.5 -  小數  -  浮點型
 10   -  整數  -  整型
 A    -  字元  -  字元

那麼c語言裡面抽象出來哪些資料型別呢?

char          //字元資料型別
short         //短整型
int           //整型
long          //長整型
long long     //更長的整型
float         //單精度浮點數
double        //雙精度浮點數
//浮點型  10.5
//整型    10
//字元    A

看了上面的資料型別,很容易看出來下面的關係:

為什麼叫浮點數?

就像66.6和6.66*10,小數點是可以浮動的,所以叫浮點數

那麼,為什麼會有上面這麼多的型別呢?我們就需要先回答一下下面這個問題:

每一種型別的大小是多少?

我們等一下用程式碼問一下他們各自的大小

先了解一下新的東西

#include<stdio.h>

int main()
{
printf("%dn",100)//
return 0;}

這個%d指的是列印(輸出)的格式,即整型,後面的100是返回值,即列印的是100,n的意思就像enter,空行的意思,如圖:

執行結果:

100

現在來解釋一下n的作用,這裡用兩組程式碼來對比一下:

第一組

#include<stdio.h>

int main()
{
printf("%dn",100)//
printf("%dn",100)
printf("%dn",100)
return 0;}

執行的結果:

100

100

100

第二組

#include<stdio.h>

int main()
{
printf("%d",100)//
printf("%d",100)
printf("%d",100)
return 0;}

執行的結果:

100100100

可以看出,n的作用就是空一行,就是平時enter的作用

接下來就是

#include<stdio.h>

int main()
{
    printf("%d ", sizeof(char));
	printf("%d ", sizeof(short));
	printf("%d ", sizeof(int));
	printf("%d ", sizeof(long));
	printf("%d ", sizeof(long long));
	printf("%d ", sizeof(float));
	printf("%d ", sizeof(double));
    return 0;
}

執行結果:

1 2 4 4 8 4 8

(那麼這些數位的含義是什麼?它們又是怎麼來看出所佔記憶體的大小呢?我們等一會兒就來解釋。)

這裡的sizeof()的作用就是返回資料型別中的char在記憶體中所佔的大小,通俗點就是用它來告訴你char這個資料型別佔多少記憶體

不過這裡用%d不太合適,在一些的編譯器裡面會報警告,我們用%zu最合適,sizeof的返回值要用%zu來列印。

int main()
{
	printf("%zun", sizeof(char));
	printf("%zun", sizeof(short));
	printf("%zun", sizeof(int));
	printf("%zun", sizeof(long));
	printf("%zun", sizeof(long long));
	printf("%zun", sizeof(float));
	printf("%zun", sizeof(double));
	return 0;
}

結果跟上面那個圖是一樣的,執行結果是:

1

2

4

4

8

4

8

(我裡面加了n,所以是一排一排的)

接著我們來講上面那些數位的含義,

你只看到了它們這些數位,但沒有單位,其實它們都是有單位的,這裡我們就來了解一下計算機的單位:

計算機的單位從大到小就是PB,TB,GB,MB,KB,byte。就像我們平時生活中用的流量,一般開通的套餐只到GB,所以GB,MB,KB這些我們都已經很熟悉了,下面就是各單位間的換算

 1Pb=1024Tb                   
 1Tb=1024Gb
 1Gb=1024Mb                  
 1Mb=1024kb
 1kb=1024byte(位元組)  
 1byte=8bit(位元位)

看到這些,你可能對這些沒有什麼概念,我們再來進一步瞭解一下

我們都知道計算機使用的是二進位制語言,而我們生活在十進位制的世界,

來給一個空間| |,裡面可以填1或0就是|1|或|0|,這就是一個bit,對應的就是燈亮和燈滅

那麼一個位元組byte呢?

|1| |0| |1| |0| |0| |1| |0| |1|佔了8個空間,也就是8個bit

10100101 對應的十進位制就是 165

一個位元組能儲存多大的數位呢?

11111111 對應的十進位制就是255,即最多可以儲存2^8-1這麼大的數

我們可以感受到越到後面的單位大小越龐大

解釋完計算機的單位,我們就來回到上面的1 2 4 4 8 4 8,它們的單位都是位元組

char對應1位元組,可以開闢一個能儲存2^8-1的空間

short對應2位元組,可以開闢一個能儲存2^16-1的空間

int對應4位元組,可以開闢一個能儲存2^32-1的空間

long long對應8位元組,可以開闢一個能儲存2^64-1的空間

裡面的float和double是來儲存小數的,雙精度浮點數比單精度浮點數精度要高一點,這個在以後的部落格會更加深入的去講解

但是我們看到int和long為什麼都是4呢?

C語言規定,sizeof(long)>=sizeof(int)就行,但不會超過sizeof(long long)

那麼我們回到前面提出的問題,為什麼要規定這樣的資料型別呢,答案是節省空間:

給你一個數2,你要把它存起來,你用了long long這個資料型別,開闢了能儲存2^64-1的空間來放這個2,是不是有點大材小用了,用一個char就行了,提高空間的利用率

接下來我們來解釋一下下面的程式碼,來引入下一個部落格講的變數和常數

#include<stdio.h>
int main()
{
int age=18;
double weight=16.5;
return 0;
}

int age=18;

向記憶體申請一個int大小的空間,來把18這個資料放在age這個變數裡面,通俗一點就是,int要了一個房間,起名為age(隨便起名),把18放到了裡面。

double weight=16.5;

這個像上面一樣,double是資料型別,weight是個變數,16.5是個小數

這些資料型別就是來定義變數的

到此這篇關於適合初學者的C語言資料型別的講解的文章就介紹到這了,更多相關C語言 資料型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com