c语言ascii码表_零基础学C语言——变量、常量与数据类型
這是一個C語言系列文章,如果是初學者的話,建議先行閱讀之前的文章。筆者也會按照章節(jié)順序發(fā)布。
變量
對于初學編程語言的人來說,變量這個概念第一反應或許是數(shù)學中的自變量x。在編程中,與之相似,即變量中存放的數(shù)據(jù)可以更改。但是與數(shù)學不同的是,變量在計算機中還有額外的屬性。
一個變量包含的屬性:
對于第一點,大家很好理解,x=1,那么變量x的值為1,x = x + 1之后,x的值為2。
對于第二點,我們不得不提及兩個事物——內(nèi)存與寄存器。
這里我們暫時先不介紹寄存器,留待后續(xù)章節(jié)討論,這并不會妨礙你學習和使用C語言。
在一般情況下,C語言中定義的變量都存儲在內(nèi)存中(請暫時忽略,函數(shù)的部分參數(shù)是存在寄存器中的事實)。內(nèi)存是一塊連續(xù)的區(qū)域,如果類比的話我們可以參考路邊劃線的停車位。
一組停車位相當于一段內(nèi)存空間,而每一個停車位就相當于這段內(nèi)存空間中的一部分片段。我們的變量就好比是一個停車位區(qū)域。
額外補充一下,內(nèi)存的最小存儲單位是比特(bit),也叫位,即只能存儲一個值,這個值要么是0,要么是1。8個bit稱作一字節(jié)(byte)。
為了能更好的管理停車位,我們都要對停車位進行命名編號,便于我們快速定位某一個車位,內(nèi)存亦然。因此,也就出現(xiàn)了一個概念叫做地址。
假設(shè),圖片中離鏡頭最近的車位為1號車位,編號逐個向遠處遞增。同時,我給1號車位區(qū)域起了個名字叫x。這時,有一輛奔馳停入了1號車位,那么我也可以說,x中的車是奔馳車。
等價到內(nèi)存這個概念上就是,我有一個變量叫x,它在內(nèi)存中的地址是1,它的值是奔馳。
隨后,奔馳開走了,又來了輛路虎。那么這時,我可以說變量x的值是路虎,它的內(nèi)存地址是1。
常量
前面介紹了變量,表示一段內(nèi)存中的數(shù)據(jù)是可以變化的。與之相對的,就是常量,即一段內(nèi)存中存放的數(shù)據(jù)是不可改變的。這就好比一張光盤(暫時不考慮可擦寫的...),一旦寫入內(nèi)容,就不可再更改了。
常量在C語言中的關(guān)鍵字為const,初學者先不必糾結(jié),且繼續(xù)閱讀。
數(shù)據(jù)類型
本小節(jié)討論的是基礎(chǔ)數(shù)據(jù)類型,因此不會討論數(shù)組這樣的結(jié)構(gòu)。
在編程語言中,人為的給定了存放在內(nèi)存中數(shù)據(jù)的類型,在C語言中,這些類型有:
- 整型,即整數(shù)
- 浮點型,即實數(shù)
- 字符型,即單個的可打印字符(什么叫可打印的我們后面會說到)
- 空類型,即無類型
- 指針類型
下面我們將逐個類型說明,初學者暫時不需要死記硬背每一個類型的數(shù)值范圍,在有需求時查閱范圍即可。
整型分為:
- 有符號短整型,對應關(guān)鍵字為short,占用2字節(jié)內(nèi)存,即該類型的數(shù)據(jù)值范圍為-32,768 到 32,767
- 無符號短整型,對應關(guān)鍵字為unsigned short,占用2字節(jié)內(nèi)存,數(shù)據(jù)值范圍0 到 65,535
- 有符號整型,關(guān)鍵字int,占用4字節(jié)(注意,在windows上這個類型占2字節(jié)),數(shù)據(jù)值范圍-2,147,483,648 到 2,147,483,647
- 無符號整型,關(guān)鍵字unsigned int,占用4字節(jié),數(shù)據(jù)值范圍0 到 4,294,967,295
- 有符號長整型,關(guān)鍵字long,32位系統(tǒng)上占4字節(jié),數(shù)據(jù)值范圍-2,147,483,648 到 2,147,483,647,64位系統(tǒng)上占8字節(jié),數(shù)據(jù)值范圍-9223372036854775808到9223372036854775807
- 無符號長整型,關(guān)鍵字unsigned long,32位系統(tǒng)上占4字節(jié),數(shù)據(jù)值范圍0 到 4,294,967,295,64位系統(tǒng)上占8字節(jié),數(shù)據(jù)值范圍0到18446744073709551615
- 還有long long和unsigned long long,占8字節(jié)內(nèi)存,數(shù)據(jù)值范圍分別為-9223372036854775808到9223372036854775807和0到18446744073709551615
浮點型分為:
- 單精度浮點型,關(guān)鍵字為float,占4字節(jié),數(shù)值范圍1.2E-38 到 3.4E+38,精度是精確到6位小數(shù)
- 雙精度浮點型,關(guān)鍵詞為double,占8字節(jié),數(shù)值范圍2.3E-308 到 1.7E+308,精度是精確到15位小數(shù)
- 還有一種,碼哥我詞窮了,不知道中文該怎么叫了,關(guān)鍵詞為long double,占16字節(jié),數(shù)值范圍3.4E-4932 到 1.1E+4932,精度是精確到19位小數(shù)
可以看到,實數(shù)都是有一個精度范圍的,如果超出這個精度范圍就會造成精度損失,因此在運行一些除法運算后再執(zhí)行乘法力圖恢復初始值時有時是不可能的。
字符型分為:
- 有符號字符,關(guān)鍵詞char,占1字節(jié),數(shù)值范圍-128 到 127
- 無符號字符,關(guān)鍵詞unsigned char,占1字節(jié),數(shù)值范圍0 到 255
其中char型字符為可輸出字符,參考ASCII碼表來找到其對應的輸出到終端上的字符:
ASCII碼表
其中,值為0~31和127的字符是控制類字符,剩余為可顯示字符。
空類型:又稱為void型,關(guān)鍵字為void,表示無類型或者不知其類型。
指針類型:本節(jié)暫時不討論,留待后續(xù)專門討論指針的文章中詳述。
看一些例子
到此,我們來看一下各種類型的例子,鞏固一下前面的內(nèi)容。
整型示例:
short var_1 = -1; //有符號短整型unsigned short var_2 = 65535; //無符號短整型int var_3 = 1000000; //有符號整型unsigned int var_4 = 999999999; //無符號整型long var_5 = 9876278913; //有符號長整型unsigned long var_6 = 12871236897; //無符號長整型long long var_7 = -1238123871; //碼哥詞窮,這類型你就當是長長整型吧...unsigned long long var_8 = 1987623453;const int a = 10; //整型常量a的值為10const short b = 127; //短整型常量b的值為127浮點型示例:
float var_1 = 3.141592; //單精度浮點數(shù)double var_2 = 1.124987651; //雙精度浮點數(shù)long double var_3 = 3231.3123817682;const float pi = 3.141592; //單精度浮點型常量pi的值為3.141592字符型示例:
char var_1 = 70; //有符號字符型char var_2 = 'F'; //有符號字符型,var_2和var_1其實是相等的,在ASCII碼表中,F的十進制值即為70//如果要給char型變量賦值A(chǔ)SCII碼表中可顯示字符,需要用單引號擴住,且單引號內(nèi)只能有一個字符//但有一種特例,叫做轉(zhuǎn)譯字符例如下面:char var_3 = ''; //這里的 就是轉(zhuǎn)義字符,當編譯器遇到轉(zhuǎn)自字符時會吞掉轉(zhuǎn)義字符,//并查看其后字符是什么字符,然后轉(zhuǎn)成相應特定字符,本例中為換行符,即ASCII中值為10的換行符。unsigned char var_4 = 255; //無符號字符型const char enter = ''; //字符型常量enter的值為變量以及常量的命名要求
上面的示例中碼哥對變量和常量的名字命名都是形如:
var_xxx其實在C語言中,變量與常量的名字命名是有規(guī)范的,要求如下:
名字必須以字母或者下劃線開頭,后面的字符既可以是字母也可以是下劃線也可以是數(shù)字。
所以,形如如下名字是不合法的:
123_abc-a+a123bcd類型轉(zhuǎn)換
先來看一個例子體會一下:
int a = 5.0 / 2;/表示?,即除法。這時a的值是多少呢?
答案是2,而不是2.5。這里就是類型轉(zhuǎn)換起了作用。5.0是浮點數(shù),浮點數(shù)除整數(shù),得到的結(jié)果還是浮點數(shù),但是這個值賦給了整型變量a,因此除法的結(jié)果需要滿足a的類型約束,只保留整數(shù)部分,因此就是2。這里也不存在四舍五入一說,即便是2.99999也會是2,而不是3。
上面的這種轉(zhuǎn)換叫做自動類型轉(zhuǎn)換,與之相對的轉(zhuǎn)換模式叫強制類型轉(zhuǎn)換。
我們先看下強制類型轉(zhuǎn)換的例子,也就能理解上面這個例子叫自動類型轉(zhuǎn)換了。
int b = (int)2.5;在這個例子中,如果不在2.5前加(int),那么編譯器會給出警告,說你這么寫等于是“偷摸地”將雙精度浮點數(shù)轉(zhuǎn)換為整型了。為了避免這個警告(當然,取整數(shù)也是符合這個例子中我的預期的,即我要的也是整數(shù)),在2.5前加入:
(基礎(chǔ)數(shù)據(jù)類型) //本例為(int)將2.5先轉(zhuǎn)成整型2,然后賦給變量b。
下面看一些其他類型轉(zhuǎn)換的例子:
unsigned char var_1 = (unsigned char)'F'; //因為'F'默認為char型short var_2 = (short)999999; //999999為int型,直接賦值會爆出警告,強制類型轉(zhuǎn)換后不會有警告,但是var_2的值為16959這里var_2的值為16959的原因是:
整型999999占4字節(jié),其十六進制為0x000F423F。short類型占2字節(jié),因此會將int型的低16位(即后兩字節(jié))內(nèi)容賦給變量var_2,也就是0x423F,這個十六進制數(shù)轉(zhuǎn)換為十進制后的值就是16959。
對于十六進制不了解的讀者,可以去網(wǎng)上先充一下電,因為十六進制在編程中用到的頻度不比整數(shù)低。
喜歡的讀者可以關(guān)注碼哥,也可以在下方留言評論,如果有不清楚的地方也可以私信碼哥,我會第一時間回復。
感謝閱讀!
總結(jié)
以上是生活随笔為你收集整理的c语言ascii码表_零基础学C语言——变量、常量与数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达深度学习第三周
- 下一篇: 计算机网络工程毕业论文题目,计算机网络技