適合初學(xué)者的C語言數(shù)據(jù)類型的講解
之前說過寫代碼是為了解決生活中的問題,比如購物。
假設(shè)我們要買一本書,它的價格是10.5,是個小數(shù),也可以是一個整數(shù)10,它的書名是鋼鐵是怎樣煉成的,是一組字符串,就像svli@gikvw這些,里面每個稱為字符。
我們要去用c語言來去存儲這些信息呢,在c語言里面為了能夠描述這些類型。
就把小數(shù)抽象出來一個數(shù)據(jù)類型,叫浮點(diǎn)型
把整數(shù)抽象出來一個數(shù)據(jù)類型,叫整型(就是上一個博客里面的int)
把字符抽象出來一個數(shù)據(jù)類型,就叫字符
10.5 - 小數(shù) - 浮點(diǎn)型
10 - 整數(shù) - 整型
A - 字符 - 字符
那么c語言里面抽象出來哪些數(shù)據(jù)類型呢?
char //字符數(shù)據(jù)類型
short //短整型
int //整型
long //長整型
long long //更長的整型
float //單精度浮點(diǎn)數(shù)
double //雙精度浮點(diǎn)數(shù)
//浮點(diǎn)型 10.5
//整型 10
//字符 A
看了上面的數(shù)據(jù)類型,很容易看出來下面的關(guān)系:

為什么叫浮點(diǎn)數(shù)?
就像66.6和6.66*10,小數(shù)點(diǎn)是可以浮動的,所以叫浮點(diǎn)數(shù)
那么,為什么會有上面這么多的類型呢?我們就需要先回答一下下面這個問題:
每一種類型的大小是多少?
我們等一下用代碼問一下他們各自的大小
先了解一下新的東西
#include<stdio.h>
int main()
{
printf("%d\n",100)//
return 0;}
這個%d指的是打?。ㄝ敵觯┑母袷?,即整型,后面的100是返回值,即打印的是100,\n的意思就像enter,空行的意思,如圖:
運(yùn)行結(jié)果:
100

現(xiàn)在來解釋一下\n的作用,這里用兩組代碼來對比一下:
第一組
#include<stdio.h>
int main()
{
printf("%d\n",100)//
printf("%d\n",100)
printf("%d\n",100)
return 0;}
運(yùn)行的結(jié)果:
100
100
100

第二組
#include<stdio.h>
int main()
{
printf("%d",100)//
printf("%d",100)
printf("%d",100)
return 0;}
運(yùn)行的結(jié)果:
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;
}
運(yùn)行結(jié)果:
1 2 4 4 8 4 8
(那么這些數(shù)字的含義是什么?它們又是怎么來看出所占內(nèi)存的大小呢?我們等一會兒就來解釋。)

這里的sizeof()的作用就是返回?cái)?shù)據(jù)類型中的char在內(nèi)存中所占的大小,通俗點(diǎn)就是用它來告訴你char這個數(shù)據(jù)類型占多少內(nèi)存
不過這里用%d不太合適,在一些的編譯器里面會報(bào)警告,我們用%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;
}
結(jié)果跟上面那個圖是一樣的,運(yùn)行結(jié)果是:
1
2
4
4
8
4
8
(我里面加了\n,所以是一排一排的)
接著我們來講上面那些數(shù)字的含義,
你只看到了它們這些數(shù)字,但沒有單位,其實(shí)它們都是有單位的,這里我們就來了解一下計(jì)算機(jī)的單位:
計(jì)算機(jī)的單位從大到小就是PB,TB,GB,MB,KB,byte。就像我們平時生活中用的流量,一般開通的套餐只到GB,所以GB,MB,KB這些我們都已經(jīng)很熟悉了,下面就是各單位間的換算
1Pb=1024Tb
1Tb=1024Gb
1Gb=1024Mb
1Mb=1024kb
1kb=1024byte(字節(jié))
1byte=8bit(比特位)
看到這些,你可能對這些沒有什么概念,我們再來進(jìn)一步了解一下
我們都知道計(jì)算機(jī)使用的是二進(jìn)制語言,而我們生活在十進(jìn)制的世界,
來給一個空間| |,里面可以填1或0就是|1|或|0|,這就是一個bit,對應(yīng)的就是燈亮和燈滅
那么一個字節(jié)byte呢?
|1| |0| |1| |0| |0| |1| |0| |1|占了8個空間,也就是8個bit
10100101 對應(yīng)的十進(jìn)制就是 165
一個字節(jié)能儲存多大的數(shù)字呢?
11111111 對應(yīng)的十進(jìn)制就是255,即最多可以儲存2^8-1這么大的數(shù)
我們可以感受到越到后面的單位大小越龐大
解釋完計(jì)算機(jī)的單位,我們就來回到上面的1 2 4 4 8 4 8,它們的單位都是字節(jié)
char對應(yīng)1字節(jié),可以開辟一個能儲存2^8-1的空間
short對應(yīng)2字節(jié),可以開辟一個能儲存2^16-1的空間
int對應(yīng)4字節(jié),可以開辟一個能儲存2^32-1的空間
long long對應(yīng)8字節(jié),可以開辟一個能儲存2^64-1的空間
里面的float和double是來存儲小數(shù)的,雙精度浮點(diǎn)數(shù)比單精度浮點(diǎn)數(shù)精度要高一點(diǎn),這個在以后的博客會更加深入的去講解
但是我們看到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,是不是有點(diǎn)大材小用了,用一個char就行了,提高空間的利用率
接下來我們來解釋一下下面的代碼,來引入下一個博客講的變量和常量
#include<stdio.h>
int main()
{
int age=18;
double weight=16.5;
return 0;
}
int age=18;
向內(nèi)存申請一個int大小的空間,來把18這個數(shù)據(jù)放在age這個變量里面,通俗一點(diǎn)就是,int要了一個房間,起名為age(隨便起名),把18放到了里面。
double weight=16.5;
這個像上面一樣,double是數(shù)據(jù)類型,weight是個變量,16.5是個小數(shù)
這些數(shù)據(jù)類型就是來定義變量的
到此這篇關(guān)于適合初學(xué)者的C語言數(shù)據(jù)類型的講解的文章就介紹到這了,更多相關(guān)C語言 數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++在成員函數(shù)中使用STL的find_if函數(shù)實(shí)例
這篇文章主要介紹了C++在成員函數(shù)中使用STL的find_if函數(shù)實(shí)例,包括了STL中find_if函數(shù)的具體用法及相關(guān)的完整實(shí)例,非常具有參考借鑒價值,需要的朋友可以參考下2014-10-10
C++ opencv實(shí)現(xiàn)的把藍(lán)底照片轉(zhuǎn)化為白底照片功能完整示例
這篇文章主要介紹了C++ opencv實(shí)現(xiàn)的把藍(lán)底照片轉(zhuǎn)化為白底照片功能,結(jié)合完整實(shí)例形式詳細(xì)分析了C++使用opencv模塊進(jìn)行圖片轉(zhuǎn)換操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-12-12
C語言中變量與其內(nèi)存地址對應(yīng)的入門知識簡單講解
這篇文章主要介紹了C語言中變量與其內(nèi)存地址對應(yīng)的入門知識簡單講解,同時這也是掌握指針部分知識的基礎(chǔ),需要的朋友可以參考下2015-12-12

