目錄
- 一、變量與數據類型
- (一)變量的數據類型
- (二)變量命名規則
- (三)定義變量
- (四)變量賦值
- (五)查看數據類型
- (六)數據類型的字節長度
- (七)sizeof運算符
- 二、進制表示與轉換
- (一)不同進制表示
- (二)進制轉換方法
- 三、ASCII碼
一、變量與數據類型
(一)變量的數據類型
類型 | 特點 |
---|---|
int | 整數類型(整型) |
long long | 長整型 |
short | 短整型 |
float | 單精度浮點型 |
double | 雙精度浮點型 |
char | 單字符/小整數類型 |
string | 字符串類型 |
bool | 布爾值類型 |
void | 無類型 |
一般來說,可以直接使用字符串類型string不用加頭文件< string >,因為有的編譯器< iostream >中通常包含,不過有的舊版本編譯器不一定包含,可能報錯無法編譯成功:
#include <string>
總結一下,上面的數據類型中,int就是整數,float和double就是小數,而string是字符串(中文、英文、符號等),同時要注意float和double的區別。
類型 | 特點 | 精度 | 占用空間 |
---|---|---|---|
float | 單精度浮點型 | 6~7位小數 | 4字節(byte) |
double | 雙精度浮點型 | 15-16位小數 | 8字節(byte) |
(二)變量命名規則
變量可以比作一個盒子,可以裝數據,同時它也有一個名字,即變量名
。但是,變量的命名有一個嚴格的規則,如下:
① 變量名稱不能是c++中的關鍵字、標準庫函數,例如,if、else、true、false等。
② 變量名稱可以由英文字母、數字及下劃線(_)組成,但不能以數字開頭。
③ 嚴格遵循大小寫。
(三)定義變量
1、定義一個變量:
根據剛剛學到的變量數據類型,我們知道,在定義變量時候要首先定義變量的類型,然后再寫上變量的名字,定義變量的具體方法如下:
數據類型 變量名字; //不要忘記英文冒號了!!
2、定義多個變量:
也可以一次定義多個變量,通過英文逗號隔開就好,要注意這樣定義的變量是屬于同一個數據類型的,如下格式:
數據類型 變量名字1,變量名字2,……; //不要忘記英文冒號了!!
3、定義變量的區間:
另外,這里要注意一下,定義變量應該在哪里定義?因為在主函數int main()里面定義和其他地方定義的意思是不一樣的。
【一句話總結,例如,自己家的電腦和外面網吧的電腦】
在主函數外面定義的變量就是外面網吧的電腦,其他人都可以使用,是公共的,其他人(所有函數)都可以使用。
在主函數里面定義的變量就是自己家的電腦,是我的電腦,只有我(主函數里面的代碼)才能使用,其他人用該電腦無法打游戲。
(四)變量賦值
一定要注意,先定義函數,然后再賦值
!不過也可以將定義和賦值一起寫,簡化一下,賦值是通過在變量名字后面寫一個等于號,然后后面寫內容。賦值操作并不會改變變量的數據類型。
#include<iostream>
using namespace std;int main()
{int a;a = 1;int A = 2;cout << a << endl;cout << A;return 0;
}
運行結果如下:
可以一次性定義多個同類型的變量,也可以一次性cout輸出幾個變量,如下:
#include<iostream>
using namespace std;int main()
{int a=1,b=2,c=3,d=4;cout << a << b << c << d;return 0;
}
運行結果如下:
可以實現一個簡單的兩個整數相加計算器功能,如下:
#include<iostream>
using namespace std;int main()
{int a=1,b=2,c;cout << "a+b的結果是:\n"<< a + b ;return 0;
}
運行結果如下:
也可以定義變量來輸出字符串,不過記得要加頭文件< cstring >,如下:
#include<iostream>
#include<cstring>
using namespace std;int main()
{int a = 1;float b = 2.566666;string c = "今天是2025/3/30 !";cout << "a和b的值是:" << a << "\n" << b << endl;cout << c;return 0;
}
運行結果如下:
(五)查看數據類型
如果我們需要查看我們創建變量的數據類型,就需要先導入頭文件< typeinfo >,然后通過typeid().name()來查看,typeid()括號里面寫變量的名稱。例如,下面代碼,定義了七個數據類型,通過該方法查看并cout輸出:
#include<iostream>
#include<cstring>
#include <typeinfo>
using namespace std;int main()
{int a = 1;long long b = 6666666666;float c = 0.2;double d = 0.00000000003;char e = 'A';string f = "今天是2025年3月30日!";bool g = true;cout << "a的類型是:" << typeid(a).name() << "\n";cout << "b的類型是:" << typeid(b).name() << "\n";cout << "c的類型是:" << typeid(c).name() << "\n";cout << "d的類型是:" << typeid(d).name() << "\n";cout << "e的類型是:" << typeid(e).name() << "\n";cout << "f的類型是:" << typeid(f).name() << "\n";cout << "g的類型是:" << typeid(g).name() << "\n";return 0;
}
運行結果如下:
所以這里,我們可以總結一下通過typeid().name()所得到的數據類型:
類型 | 特點 | 名稱 |
---|---|---|
int | 整數類型(整型) | i |
bool | 布爾值類型 | b |
char | 字符串類型 | c |
long long | 長整型 | x |
float | 單精度浮點型 | f |
double | 雙精度浮點型 | d |
string | 字符串類型 | Ss |
(六)數據類型的字節長度
數據類型是以字節(Byte)
為單位來存儲的。
名稱 | 表示 |
---|---|
位 | bit |
字節 | Byte |
固定字長 | 8位、16位、32位、64位等 |
機器字長 | 32位、64位等 |
常用的基本數據類型的長度如下表:
類型 | 特點 | 長度(Byte) |
---|---|---|
bool | 布爾值類型 | 1B |
char | 單字符/小整數類型 | 1B |
short | 短整數類型 | 2B |
int | 整數類型(整型) | 4B |
float | 單精度浮點型 | 4B |
long long | 長整型 | 8B |
double | 雙精度浮點型 | 8B |
(七)sizeof運算符
sizeof運算符用于計算某種類型在計算機內存中所占的字節數(字節長度),例如:
#include<iostream>
using namespace std;
int main()
{bool a;short b;int c;double d;cin >> a >> b >> c >> d; cout << "a的值為:" << sizeof(a) << endl;cout << "b的值為:" << sizeof(b) << endl;cout << "c的值為:" << sizeof(c) << endl;cout << "d的值為:" << sizeof(d) << endl;return 0;
}
運行結果如下:
二、進制表示與轉換
一般有以下常見的進制表示,例如,二進制、八進制、十進制和十六進制。要注意是從0開始,可以簡單描述為逢X進1
(X為2、8、10、16),如下表:
類型 | 寫法 |
---|---|
二進制 | 0、1 |
八進制 | 0、1、2、3、4、5、6、7 |
十進制 | 0、1、2、3、4、5、6、7、8、9 |
十六進制 | 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F |
尤其要注意十六進制中,有一些是用大寫英文字母代替的,如下:
十六進制表示 | 對應數字 |
---|---|
A | 10 |
B | 11 |
C | 12 |
D | 13 |
E | 14 |
F | 15 |
(一)不同進制表示
我們數學默認是十進制(逢十進一)表示,而計算機是采用二進制的,如果我們想在c++中表示其他進制,需要在數字前添加別的東西,才能表示該進制的寫法。例如,以15為例子,如下:
類型 | 寫法 | 備注 |
---|---|---|
十進制 | 15 | 無前綴 |
八進制 | 017 | 加前綴【0 】 |
二進制 | 0b1111 | 加前綴【0b 】 |
十六進制 | 0xF | 加前綴【0x 】 |
(二)進制轉換方法
1、輸出為十進制
輸出為十進制是通過控制符dec
(decimalism,十進制)來實現的,例如以下代碼:
#include<iostream>
using namespace std;int main()
{cout << "017八進制轉十進制輸出:" << dec << 017 << endl;cout << "0b1111二進制轉十進制輸出:" << dec << 0b1111 << endl;cout << "0xF十六進制轉十進制輸出:" << dec << 0xF << endl;return 0;
}
運行結果如下:
2、輸出為八進制
輸出為八進制是通過控制符oct
(Octal Q,八進制)來實現的,例如以下代碼:
#include<iostream>
using namespace std;int main()
{cout << "15十進制轉八進制輸出:" << oct << 15 << endl;cout << "0b1111二進制轉八進制輸出:" << oct << 0b1111 << endl;cout << "0xF十六進制轉八進制輸出:" << oct << 0xF << endl;return 0;
}
運行結果如下:
3、輸出為十六進制
輸出為八進制是通過控制符hex
(hexadecimal,十六進制)來實現的,例如以下代碼:
#include<iostream>
using namespace std;int main()
{cout << "15十進制轉十六進制輸出:" << hex << 15 << endl;cout << "0b1111二進制轉十六進制輸出:" << hex << 0b1111 << endl;cout << "017八進制轉十六進制輸出:" << hex << 017 << endl;return 0;
}
運行結果如下:
4、輸出為二進制
輸入二進制需要先導入一個 < bitset > 頭文件,然后通過bitset來實現,如果是要轉換為八位,即bitset<位數>(數字)
。下面是示例代碼:
#include<iostream>
#include<bitset>
using namespace std;int main()
{cout << "15十進制轉二進制輸出:" << bitset<8>(15) << endl;cout << "017八進制轉二進制輸出:" << bitset<8>(017) << endl;cout << "0xF十六進制轉二進制輸出:" << bitset<8>(0xF) << endl;return 0;
}
運行結果如下:
三、ASCII碼
對于計算機中非數值信息(字母、符號、控制字符等),它們也是通過二進制0和1進行編碼來顯示的,通常采用的是ASCII編碼。簡單的來說,ASCII碼是計算機中的「字符字典」,相當于給每個常用的字母、符號等都編了號,從而讓計算機能理解。因為,計算機只認識0和1(二進制),所以ASCII碼可以幫我們把字母等變成二進制數字。
ASCII碼一共定義了128個字符(后來擴展成256個),主要包含以下內容:
①英文字母(大小寫)
②數字0~9
③標點符號(!@#¥%*等)
④控制字符(回車、換行等)
在c++中,我們使用char()
和int()
進行顯式類型轉換,進行ASCII字符與對應編碼值之間的轉換,如下:
類型 | 作用 |
---|---|
int(數字) | 數字 → 字符 |
char(字符) | 字符 → 數字 |
例如,我們知道大寫英文字母 A ,而它的ASCII碼為65,就可以通過char()將數字轉換為字符,同理,我們將字符 A 轉換為對應的ASCII碼,如下代碼:
#include<iostream>
using namespace std;int main()
{int a = 100;char b = 'A';cout << "變量a對應的字符:" << char(a) << endl;cout << "變量b的ASCII碼是:" << int(b);return 0;
}
運行結果如下: