<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
之前說過寫程式碼是為了解決生活中的問題,比如購物。
假設我們要買一本書,它的價格是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!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45