適合初學者的C語言數(shù)據(jù)類型的講解
之前說過寫代碼是為了解決生活中的問題,比如購物。
假設我們要買一本書,它的價格是10.5,是個小數(shù),也可以是一個整數(shù)10,它的書名是鋼鐵是怎樣煉成的,是一組字符串,就像svli@gikvw這些,里面每個稱為字符。
我們要去用c語言來去存儲這些信息呢,在c語言里面為了能夠描述這些類型。
就把小數(shù)抽象出來一個數(shù)據(jù)類型,叫浮點型
把整數(shù)抽象出來一個數(shù)據(jù)類型,叫整型(就是上一個博客里面的int)
把字符抽象出來一個數(shù)據(jù)類型,就叫字符
10.5 - 小數(shù) - 浮點型
10 - 整數(shù) - 整型
A - 字符 - 字符
那么c語言里面抽象出來哪些數(shù)據(jù)類型呢?
char //字符數(shù)據(jù)類型
short //短整型
int //整型
long //長整型
long long //更長的整型
float //單精度浮點數(shù)
double //雙精度浮點數(shù)
//浮點型 10.5
//整型 10
//字符 A
看了上面的數(shù)據(jù)類型,很容易看出來下面的關系:
為什么叫浮點數(shù)?
就像66.6和6.66*10,小數(shù)點是可以浮動的,所以叫浮點數(shù)
那么,為什么會有上面這么多的類型呢?我們就需要先回答一下下面這個問題:
每一種類型的大小是多少?
我們等一下用代碼問一下他們各自的大小
先了解一下新的東西
#include<stdio.h> int main() { printf("%d\n",100)// return 0;}
這個%d指的是打印(輸出)的格式,即整型,后面的100是返回值,即打印的是100,\n的意思就像enter,空行的意思,如圖:
運行結果:
100
現(xiàn)在來解釋一下\n的作用,這里用兩組代碼來對比一下:
第一組
#include<stdio.h> int main() { printf("%d\n",100)// printf("%d\n",100) printf("%d\n",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
(那么這些數(shù)字的含義是什么?它們又是怎么來看出所占內存的大小呢?我們等一會兒就來解釋。)
這里的sizeof()的作用就是返回數(shù)據(jù)類型中的char在內存中所占的大小,通俗點就是用它來告訴你char這個數(shù)據(jù)類型占多少內存
不過這里用%d不太合適,在一些的編譯器里面會報警告,我們用%zu最合適,sizeof的返回值要用%zu來打印。
int main() { printf("%zu\n", sizeof(char)); printf("%zu\n", sizeof(short)); printf("%zu\n", sizeof(int)); printf("%zu\n", sizeof(long)); printf("%zu\n", sizeof(long long)); printf("%zu\n", sizeof(float)); printf("%zu\n", sizeof(double)); return 0; }
結果跟上面那個圖是一樣的,運行結果是:
1
2
4
4
8
4
8
(我里面加了\n,所以是一排一排的)
接著我們來講上面那些數(shù)字的含義,
你只看到了它們這些數(shù)字,但沒有單位,其實它們都是有單位的,這里我們就來了解一下計算機的單位:
計算機的單位從大到小就是PB,TB,GB,MB,KB,byte。就像我們平時生活中用的流量,一般開通的套餐只到GB,所以GB,MB,KB這些我們都已經很熟悉了,下面就是各單位間的換算
1Pb=1024Tb
1Tb=1024Gb
1Gb=1024Mb
1Mb=1024kb
1kb=1024byte(字節(jié))
1byte=8bit(比特位)
看到這些,你可能對這些沒有什么概念,我們再來進一步了解一下
我們都知道計算機使用的是二進制語言,而我們生活在十進制的世界,
來給一個空間| |,里面可以填1或0就是|1|或|0|,這就是一個bit,對應的就是燈亮和燈滅
那么一個字節(jié)byte呢?
|1| |0| |1| |0| |0| |1| |0| |1|占了8個空間,也就是8個bit
10100101 對應的十進制就是 165
一個字節(jié)能儲存多大的數(shù)字呢?
11111111 對應的十進制就是255,即最多可以儲存2^8-1這么大的數(shù)
我們可以感受到越到后面的單位大小越龐大
解釋完計算機的單位,我們就來回到上面的1 2 4 4 8 4 8,它們的單位都是字節(jié)
char對應1字節(jié),可以開辟一個能儲存2^8-1的空間
short對應2字節(jié),可以開辟一個能儲存2^16-1的空間
int對應4字節(jié),可以開辟一個能儲存2^32-1的空間
long long對應8字節(jié),可以開辟一個能儲存2^64-1的空間
里面的float和double是來存儲小數(shù)的,雙精度浮點數(shù)比單精度浮點數(shù)精度要高一點,這個在以后的博客會更加深入的去講解
但是我們看到int和long為什么都是4呢?
C語言規(guī)定,sizeof(long)>=sizeof(int)
就行,但不會超過sizeof(long long)
那么我們回到前面提出的問題,為什么要規(guī)定這樣的數(shù)據(jù)類型呢,答案是節(jié)省空間:
給你一個數(shù)2,你要把它存起來,你用了long long這個數(shù)據(jù)類型,開辟了能儲存2^64-1的空間來放這個2,是不是有點大材小用了,用一個char就行了,提高空間的利用率
接下來我們來解釋一下下面的代碼,來引入下一個博客講的變量和常量
#include<stdio.h> int main() { int age=18; double weight=16.5; return 0; }
int age=18;
向內存申請一個int大小的空間,來把18這個數(shù)據(jù)放在age這個變量里面,通俗一點就是,int要了一個房間,起名為age(隨便起名),把18放到了里面。
double weight=16.5;
這個像上面一樣,double是數(shù)據(jù)類型,weight是個變量,16.5是個小數(shù)
這些數(shù)據(jù)類型就是來定義變量的
到此這篇關于適合初學者的C語言數(shù)據(jù)類型的講解的文章就介紹到這了,更多相關C語言 數(shù)據(jù)類型內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++在成員函數(shù)中使用STL的find_if函數(shù)實例
這篇文章主要介紹了C++在成員函數(shù)中使用STL的find_if函數(shù)實例,包括了STL中find_if函數(shù)的具體用法及相關的完整實例,非常具有參考借鑒價值,需要的朋友可以參考下2014-10-10C++ opencv實現(xiàn)的把藍底照片轉化為白底照片功能完整示例
這篇文章主要介紹了C++ opencv實現(xiàn)的把藍底照片轉化為白底照片功能,結合完整實例形式詳細分析了C++使用opencv模塊進行圖片轉換操作的相關實現(xiàn)技巧,需要的朋友可以參考下2019-12-12