写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!
【C++语言基础学习】系列文章
文章目录
一、基本内置数据类型
(一)基本数据类型
1.数据类型分类
C++同别的语言一样,为编程人员提供了种类丰富的内置数据类型和用户自定义的数据类型,以下列表罗列了C++语言中内置的基本数据类型。
类型 | 关键字 |
布尔型 | bool |
字符型 | char |
整型 | int |
浮点型 | float |
双浮点型 | double |
无类型 | void |
宽字符型 | wchar_t |
2.储存空间
此时,可以右键点击“源文件”创建一个类,创建类时会同时创建相应的头文件和源文件。假设创建一个test的类,则会自动生成一个test.h的头文件和test.cpp的源文件。
此时test.h的代码如下。
#pragma once
class test
{
};
当希望验证各个数据类型所占用的储存空间时,可在test.h文件中构建一个名为“testStorage()”的函数,并且考虑到CBase.cpp(详情请看本系列第一部分)形成exe文件执行,需要进行公共声明。
此时test.h代码如下。
#pragma once
class test
{
public:
void testStorage();
};
根据头文件和源文件的关系,此时需要在test.cpp文件中使用#include预处理指令获得test.h头文件的文件内容,然后具体实现test.h中的testStorage()函数。此操作可以通过在test.h中移动鼠标光标到“testStorage()”函数位置点击词条左下角“创建testStorage()定义(在test.cpp中)”来实现,也可以在test.cpp中手动书写。
此时test.cpp代码如下。
#include "test.h"
void test::testStorage()
{
}
接下来需要编写代码实现测试各种数据类型的储存空间的函数功能。所用的语句即iostream的cout和sizeof方法。其中,void由于是“无类型”,所以没有准确的存储空间占用,所以不进行测试。
此时test.cpp代码如下。
#include "test.h"
#include <iostream>
void test::testStorage()
{
std::cout << "bool存储空间" << sizeof(bool) << "字节" << std::endl;
std::cout << "char存储空间" << sizeof(char) << "字节" << std::endl;
std::cout << "int存储空间" << sizeof(int) << "字节" << std::endl;
std::cout << "float存储空间" << sizeof(float) << "字节" << std::endl;
std::cout << "double存储空间" << sizeof(double) << "字节" << std::endl;
std::cout << "wchar_t存储空间" << sizeof(wchar_t) << "字节" << std::endl;
}
完成头文件test.h的接口和test.cpp的具体实现后,要想形成exe运行testStorage()方法,还需要在CBase.cpp这个源文件中使用它,具体操作是通过建立一个test类(我们自定义的)的对象来使用这个对象的testStorage()方法。
此时CBase.cpp代码如下。
#include <iostream>
#include "test.h"
int main()
{
test testObject;
testObject.testStorage();
}
这里通过test类建立了这个类型的对象testObject,然后调用了testObject对象的testStorage()方法。
点击F5调试,返回结果如下。
bool存储空间1字节
char存储空间1字节
int存储空间4字节
float存储空间4字节
double存储空间8字节
wchar_t存储空间2字节
3.数据类型返回值
(1)布尔型
当使用布尔型数据类型时,判定为true则返回1,判定为false则返回0。
(2)字符型
当字符型数据类型输入的是字符时,返回值即为字符;输入的是数字的时候,默认返回为ASCII码。
(二)类型修饰
一些基本数据类型可以使用一个或多个类型修饰进行修饰,修饰在数据类型后面。
- signed
- unsigned
- short
- long
signed修饰的数据类型取值范围是正负相等的,unsigned的修饰结果则是令数据类型取非负,short可以缩小数据类型取值范围,而long则增大数据类型取值范围。
使用上一个方法也可以测试修饰的数据类型的储存空间,原理相同,这里仅出示返回结果。
储存空间占用(字节) | short | long | signed | unsigned | signed/unsigned short | signed/unsigned long |
bool | 无 | 无 | 无 | 无 | 无 | 无 |
char | 无 | 无 | 无 | 1 | 1 | 无 |
int | 2 | 4 | 4 | 4 | 2 | 4 |
float | 无 | 8 | 无 | 无 | 无 | 无 |
double | 无 | 8 | 无 | 无 | 无 | 无 |
void | 无 | 无 | 无 | 无 | 无 | 无 |
wchar_t | 无 | 无 | 无 | 无 | 无 | 无 |
由此可以看到,int整型是修饰最灵活的一个数据类型。
二、常量与变量
(一)字面值常量
字面值常量是指在源代码中直接出现的常量值,它们具有固定的值,不会改变,省去了类型的定义。
int x = 10;
例如以上代码,x就是设置的整型变量,而10则是赋予变量x的字面值常量。同时,字面值常量在输出时可以直接输出,不通过设置变量来输出。
1.标注
int dec = 85;// 十进制整数
int oct = 0123;// 八进制整数,0打头
int hex = 0x4b;// 十六进制整数,0x打头
unsigned int uint = 30u;// 无符号整数,u结尾
long int lint = 30l;// 长整型,l结尾
unsigned long int ulint = 30ul;// 无符号长整型,ul结尾
float f = 3.14f;
double fDouble = 3.14;
float fOmit = .25f;
在赋予变量值的时候,标注不同也会是输入变量的值不同,例如增加前缀0则可以使后面的数字变为八进制;而浮点数不增加后缀f则自动默认数字为双浮点数;浮点数小数点前的0可以省略等等。
2.转义符
转义符是一种特殊的字符组合,在编程语言中用于表示一些特殊的字符或字符序列。它们以反斜杠“\”开始,后面跟着一个或多个字符,用于表示目标字符或执行特定的操作。
符号 | 名称 | 作用 |
\n | 换行符(newline) | 表示在字符串中换行 |
\t | 制表符(tab) | 表示在字符串中插入一个制表符 |
\" | 双引号 | 在字符串中插入一个双引号 |
\' | 单引号 | 在字符串中插入一个单引号 |
\\ | 反斜杠自身 | 在字符串中插入一个反斜杠 |
\b | 退格符(backspace) | 在字符串中执行退格操作 |
\r | 回车符(carriage return) | 将光标移动到行首 |
\a | 响铃符(alert) | 发出提示声或闪烁光标 |
(二)变量
在C++中,变量是用于存储和表示数据的名称。每个变量都具有一个特定的类型(如整数、浮点数、字符等)以及一个关联的内存位置,用于存储该类型的值。变量的命名有以下的特点:
- 变量的名称可以由字母、数字和下划线字符组成。
- 必须以字母或下划线开头。
- 大小写区分。
- 不能使用C++关键字定义。
完成变量命名后,则需要初始化变量,即给变量赋予特定的值。初始化变量可以单个初始化,也可以多个初始化。同时,变量间也可以相互运算。
// 单个初始化
int long_a = 12;
int width_b = 23;
std::cout << "long_a:" << long_a << std::endl;
std::cout << "width_b:" << width_b << std::endl;
// 多个初始化
int a = 1, b = a + 1, c = a + b, d = 0;
std::cout << "a:" << a << " " << "b:" << b << " " << "c:" << c << " " << "d:" << d << " " << std::endl;
返回结果为:
long_a:12
width_b:23
a:1 b:2 c:3 d:0
(三)const
在C++中,const是一个关键字,用于声明常量(constant)。而使用const关键字可以将一个变量声明为常量,但const常量一旦初始化后,就不能再修改其值。
int a = 7;
a = 8;
std::cout << a << std::endl;
例如以上代码,在赋值变量a为7后,在将a声明为常量8,在输出时结果即为8,证明普通定义的常量是可以修改的。
const int a = 7;
而以上形式的const常量一经初始化,就再也无法修改。
(四)typedef
在C++中,typedef是一个关键字,用于创建类型别名(type alias)。它允许程序员为已有类型定义一个新的名称,使得代码更易读、易维护和可移植。
typedef int age;
age myAge = 21;
age hisAge = 68;
age herAge = 37;
例如以上代码,就是用typedef定义了一个叫做“age”的整型类型名,而根据类型名age可新建其他如myAge的整型变量。
通过使用typedef,代码中可以使用新的类型名称,而不再需要直接引用原始的类型名。这使得代码更可读,特别是对于复杂的数据类型或者涉及到多次使用的类型。
我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!