面向?qū)ο缶幊蹋∣OP)的本質(zhì)就是設(shè)計(jì)并拓展數(shù)據(jù)類型的過程按咒。設(shè)計(jì)自己的數(shù)據(jù)類型目的是為了讓數(shù)據(jù)得到匹配紊选,如果開發(fā)者可以順利做到這一點(diǎn)亥宿,就不難發(fā)現(xiàn)以后使用數(shù)據(jù)就會(huì)容易得多利凑。然而浆劲,在創(chuàng)建自己數(shù)據(jù)類型的前提是必須了解并掌握C++中內(nèi)置的數(shù)據(jù)類型,它們是創(chuàng)建自己數(shù)據(jù)類型的基礎(chǔ)條件哀澈。
內(nèi)置的數(shù)據(jù)類型分兩組:基本類型和復(fù)合類型牌借。本章知識(shí)點(diǎn)主要介紹基本數(shù)據(jù)類型,即整數(shù)和浮點(diǎn)數(shù)割按。似乎只有兩種數(shù)據(jù)類型膨报,但C++知道,沒有任何一種整型或浮點(diǎn)型可以滿足所有的編程需求适荣,因此它對這兩種數(shù)據(jù)類型作了升級(jí)變形现柠,后面會(huì)向大家介紹數(shù)組、字符串弛矛、指針和結(jié)構(gòu)够吩。
簡單的變量
程序在運(yùn)行的過程中往往都要存儲(chǔ)數(shù)據(jù),譬如王者榮耀需要存儲(chǔ)英雄的戰(zhàn)績丈氓、傷害值等周循。為了將數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)中,程序必須記錄三個(gè)基本屬性:
- 信息存儲(chǔ)在哪里
- 需要存儲(chǔ)什么值
- 存儲(chǔ)什么類型的信息
int harm;
harm = 900
例如上面的語句是在告訴程序万俗,它正在存儲(chǔ)一個(gè)整數(shù)鱼鼓,并使用名稱harm
來表示該整數(shù)的值。計(jì)算機(jī)內(nèi)部實(shí)際上是找到一塊能夠存儲(chǔ)整數(shù)的內(nèi)存该编,將該內(nèi)存單元標(biāo)記為harm
迄本,并將900復(fù)制到該內(nèi)存單元中;然后在使用程序時(shí)便可以使用harm
來訪問這個(gè)內(nèi)存單元课竣。
不過程序是不會(huì)告訴用戶嘉赎,它具體存在哪個(gè)單元中,實(shí)際上可以使用&
運(yùn)算符來檢索(查找)harm
的內(nèi)存地址于樟,在后面會(huì)向大家介紹指針知識(shí)時(shí)會(huì)講到公条。
變量名
在定義變量名時(shí)建議大家使用有一定含義的變量名。例如迂曲,你要定義一件商品的價(jià)格可以使用變量名price
靶橱,而不是用x
或者a
、b
等。
下面來說一下起變量名時(shí)需要注意的事項(xiàng):
- 只能使用數(shù)字关霸、字母和下劃線
- 變量中第一個(gè)字符不能是數(shù)字
- 變量名區(qū)分大小寫
- 不能將C++中的關(guān)鍵字用作名稱传黄,如
cout
、cin
等 - 以兩個(gè)下劃線或者下劃線和大寫字母打頭的名稱被保留給編譯器和其要使用的資源使用队寇。這句話可能有點(diǎn)繞膘掰,意思是這樣命名也沒有錯(cuò),但是會(huì)導(dǎo)致編譯器的行為具有不確定性佳遣,一般也不允許用戶這樣命名识埋。
- C++一般對變量名的長度沒有限制,只是有些平臺(tái)會(huì)對此限制零渐。
另外窒舟,如果你想要表達(dá)的變量需要由幾個(gè)單詞組合而成,那么建議使用下劃線進(jìn)行拼接诵盼。例如辜纲,我現(xiàn)在要表達(dá)蘋果價(jià)格,我會(huì)這樣命名:apple_price
整型
整型其實(shí)非常好理解拦耐,它代表的是沒有小數(shù)部分的數(shù)字耕腾,如0,-5杀糯,98扫俺,1000,-2025等」毯玻現(xiàn)在思考一個(gè)問題狼纬,計(jì)算機(jī)能夠存儲(chǔ)所有的整數(shù)嗎?
答案是顯而易見的骂际,當(dāng)然是不能疗琉!
往往來說為了存儲(chǔ)較大的數(shù)字,那么計(jì)算機(jī)中就得用較大的內(nèi)存來存儲(chǔ)歉铝。C++提供了好幾種整型的類型盈简,為的就是不要浪費(fèi)過多的內(nèi)存。
C++中提供了char太示、short柠贤、int、long
和C++11中新增了long long
类缤,每個(gè)版本都提供了有符號(hào)和無符號(hào)的版本臼勉。所謂有無符號(hào)的意思是,有符號(hào)的類型則可以表示正負(fù)數(shù)餐弱;而無符號(hào)則表示不能存儲(chǔ)負(fù)數(shù)宴霸。
整型short囱晴、int、long和long long
計(jì)算機(jī)內(nèi)存由位(bit)的單元組成瓢谢,不同長度的整型也會(huì)由不同數(shù)目的位來存儲(chǔ)值畸写,最多能表示4種不同的整數(shù)寬度。例如
- short至少16位
- int至少和short一樣長
- long至少32位恩闻,且至少和int一樣長
- long long至少64位,且至少與long一樣長
計(jì)算機(jī)內(nèi)存的基本單位是位(bit)剧董〈鄙校可以將位看作是電子開關(guān),0代表關(guān)翅楼,1代表開尉剩。8位的內(nèi)存可以設(shè)置出256種不同的組合,每一位都有兩種設(shè)置毅臊。所以8位的總組合數(shù)為2×2×2×2×2×2×2×2=256理茎。因此8個(gè)單元可以表示0-255或者是-128到127。每多一位那么組合數(shù)則會(huì)加倍管嬉。
字節(jié)(byte)通常指的是8位的內(nèi)存單元皂林,從這個(gè)意義上說,字節(jié)是計(jì)算機(jī)內(nèi)存的度量單位蚯撩。1KB=1024字節(jié)础倍、1MB=1024KB
如果想要知道你的系統(tǒng)中的整數(shù)最大可以支持的長度,可以使用c++中的工具sizeof
實(shí)現(xiàn)胎挎,以int
類型為例沟启,在不同的系統(tǒng)中它所表示的位數(shù)可能不同,可能是16位也可能是32位犹菇。
另外德迹,除了iostream
這個(gè)頭文件外,還需要添加一個(gè)新的頭文件climits
揭芍,這個(gè)頭文件中包含了整型限制的信息胳搞。具體來說,是它定義了表示各種限制的符號(hào)名稱称杨。例如:INT_MAX
為int
最大值流酬,CHAR_BIT
為字節(jié)位數(shù)。
limit.cpp
#include <iostream>
#include <climits>
int main()
{
using namespace std;
int n_int = INT_MAX;
short n_short = SHRT_MAX;
long n_long = LONG_MAX;
long long n_llong = LLONG_MAX;
cout << "int is " << sizeof(int) << " bytes" << endl;
cout << "short is " << sizeof n_short << " bytes" << endl;
cout << "long is " << sizeof n_long << " bytes" << endl;
cout << "long long is " << sizeof n_llong << " bytes" << endl;
cout << "maximum values: " << endl;
cout << "int: " << n_int << endl;
cout << "short: " << n_short << endl;
cout << "long: " << n_long << endl;
cout << "long: " << n_llong << endl;
cout << "minimum int value = " << INT_MIN << endl;
cout << "Bits per byte = " << CHAR_BIT << endl;
return 0;
}
輸出結(jié)果如下:
int is 4 bytes
short is 2 bytes
long is 4 bytes
long long is 8 bytes
maximum values:
int: 2147483647
short: 32767
long: 2147483647
long: 9223372036854775807
minimum int value = -2147483648
Bits per byte = 8
下面對程序做簡單的解釋說明:
1列另、運(yùn)算符sizeof和頭文件 limits
sizeof
運(yùn)算符指出芽腾,在使用8位字節(jié)的系統(tǒng)中,int
的長度位4個(gè)字節(jié)页衙√希可以對變量名或類型名使用sizeof
運(yùn)算符阴绢,不過呢使用類型名的時(shí)候需要將它放在括號(hào)內(nèi),變量名則可以不需要艰躺。
最后呻袭,大家可以嘗試去寫寫下面的代碼,看看它的執(zhí)行結(jié)果會(huì)是什么腺兴?
#include <iostream>
using namespace std;
int main() {
int intVar;
double doubleVar;
char charVar;
bool boolVar;
// 使用 sizeof 操作符獲取不同數(shù)據(jù)類型的字節(jié)大小
cout << "Size of int: " << sizeof(intVar) << " bytes" << endl;
cout << "Size of double: " << sizeof(doubleVar) << " bytes" << endl;
cout << "Size of char: " << sizeof(charVar) << " bytes" << endl;
cout << "Size of bool: " << sizeof(boolVar) << " bytes" << endl;
// 也可以直接對類型使用 sizeof
cout << "Size of float: " << sizeof(float) << " bytes" << endl;
return 0;
}
總結(jié)
本次文章的主要帶著大家學(xué)習(xí)變量名的起名方式左电,以及所有整型類型的認(rèn)識(shí)以及它們所包含的長度和字節(jié)數(shù),希望大家能夠通過這篇文章學(xué)習(xí)并掌握變量與整型相關(guān)的知識(shí)页响。
帶你開始學(xué)習(xí)C++的知識(shí)篓足。
路漫漫其修遠(yuǎn)兮,吾將上下而求索闰蚕。
與君共勉之栈拖!