目录
- 一、变量与数据类型
- (一)变量的数据类型
- (二)变量命名规则
- (三)定义变量
- (四)变量赋值
- (五)查看数据类型
- (六)数据类型的字节长度
- (七)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;
}
运行结果如下: