【C++】基本数据类型

C++ 基本数据类型是程序中最基本的数据类型,它们是构建复杂数据类型的基础。C++ 中的基本数据类型包括整型、浮点型、字符型和布尔型等。

目录

基本数据类型

整型

浮点型

字符型

转义字符

字符串

布尔类型

sizeof


基本数据类型

整型

作用:用于表示整数

C++ 中的整型包括有符号整型无符号整型两种类型,它们的取值范围和内存大小有所不同。

语法:以int类型举例

int a; //不赋初值
int b = 20; //赋初值

有符号整型是指整数既可以是正数也可以是负数的数据类型,常用的有符号整型包括 int、short 和 long。其中 int 是 C++ 中默认的整型类型,通常占用 4 个字节,可以表示的范围是 -2147483648 到 2147483647。如果需要更大范围的整数,可以使用 long 类型,它通常占用 4 个字节或 8 个字节(取决于编译器),可以表示的范围是 -2147483648 到 2147483647 或 -9223372036854775808 到 9223372036854775807。

无符号整型是指整数只能是正数的数据类型,常用的无符号整型包括 unsigned int、unsigned short 和 unsigned long。它们的范围和内存大小与有符号整型相同,但是可以表示的整数范围变为 0 到 4294967295 或 0 到 18446744073709551615。

注:当将一个负数赋值给 unsigned int 类型的变量时,实际上会将其转换为无符号整数。因此,unsigned int a = -1; 会将 -1 转换为无符号整数,其结果为 4294967295。这是因为,unsigned int 的取值范围为 0 到 4294967295,即它能够表示的最大值为 4294967295。

下面是一个完整的例子:

#include <iostream> 
using namespace std; 

int main() { 
    int a;
    a = 10;
    cout << "a: " << a << endl; //a: 10
    int b = -20;
    cout << "b: " << b << endl; //b: -20
    unsigned int c = 30;
    cout << "c: " << c << endl; //c: 30
    unsigned int d = -30;//unsigned int不可以表示负数
    cout << "d: " << d << endl; //d: 4294967266   注:4294967295是unsigned int能够表示的最大值
    return 0; 
}

 总结:

整型类型 取值范围 内存大小
signed int -2147483648 到 2147483647 4 字节
signed short(即:int) -32768 到 32767 (-2^31 ~ 2^31-1) 2 字节
signed long -2147483648 到 2147483647 4 或 8 字节(取决于编译器)
signed long long -9223372036854775808 到 9223372036854775807 8 字节
unsigned int 0 到 4294967295 4 字节
unsigned short 0 到 65535 2 字节
unsigned long 0 到 4294967295 或 0 到 18446744073709551615 4 或 8 字节(取决于编译器)
unsigned long long 0 到 18446744073709551615 8 字节

浮点型

作用:用于表示小数

C++ 中提供了两种浮点型数据类型:单精度浮点型(float)和双精度浮点型(double)

单精度浮点型有7位有效数字,双精度浮点型有15~16位有效数字

语法:和整型类似,分为:赋初值和不赋初值

float a;
float b = -20.123456f;

 下面是一个完整的例子:

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
    float a = 0.01234567890123456789f;
    double b = 0.01234567890123456789;

    cout << setprecision(15);
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
}

 注:cout << setprecision(9); 的作用是设置 cout 流的精度为9位小数。这意味着在输出浮点数时,最多只会保留9位小数,超出的部分将被截断或者四舍五入。如果不设置精度,cout 流默认会使用6位小数。

 总结:

数据类型 占用空间 有效数字范围
float 4字节 7位有效数字
double 8字节 15~16位有效数字

字符型

作用:用于显示单个字符

语法:字符常量使用单引号(’)括起来,例如:

char a = 'a';    //以字符的形式
char b = 98;    //以ASCII码形式

注:字符型变量并不是把所有的字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元中,因此在定义的时候,也可以使用ASCII赋值

举例:

#include <iostream>
using namespace std;

int main()
{
    char a = 'a';
    cout << "a = " << a << endl;
    char b = 98;
    cout << "b = " << b << endl;
    return 0;
}

转义字符

作用:用于表示一些不能显示出来的ASCII字符
常用的转义字符有:换行(\n)

转义字符 含义 ASCII码值(十进制)
\a 警报 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符”” 092
代表一个单引号(撇号)字符 039
代表一个双引号字符 034
? 代表一个问号 063
\0 数字0 000
\ddd 8进制转义字符,d范围0~7 3位8进制
\xhh 16进制转义字符,h范围09,af,A~F 3位16进制

例子:

#include <iostream>
using namespace std;

int main()
{
    string a = "hello world!\n";    //末尾添加的\n相当于endl,即换行
    cout << "a = " << a;
    string b = "hello c++";
    cout << "b = " << b << endl;
    return 0;
}

字符串

作用:存储一串字符

字符串可以包含任意数量的字符,包括字母、数字、标点符号等等,字符串的长度可以动态增长或缩短

语法:可以使用使用字符串常量初始化也可以使用使用字符数组初始化

string str1 = "Hello, World!";            // 使用字符串常量初始化
string str2 = { 'H', 'e', 'l', 'l', 'o' };// 使用字符数组初始化

注:字符串的表达,也可以采用C语言的风格,但是C语言的风格需要自己编写很多字符串处理函数,比如substr()、find()、replace()等

C语言风格字符串语法:

char variable_name[] = "value";//语法
char str_charp[] = "Hello C++";//例子

例子:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str1 = "Hello, World!";          // 使用字符串常量初始化
    string str2 = { 'H', 'e', 'l', 'l', 'o' };// 使用字符数组初始化

    cout << "str1: " << str1 << endl;       // 输出字符串
    cout << "str2: " << str2 << endl;

    char str_charp[] = "Hello C++";
    cout << "str_charp[]: " << str_charp << endl;

    return 0;
}

布尔类型

作用:用于表示真或假

bool类型只有两个值:true — 真(本质是1);false — 假(本质是0)
bool占1个字节大小

语法:bool variable_name=”variable”;

bool variable_name = "variable";     //语法
bool flag = true;                    //例子

例子:

#include <iostream>
using namespace std;

int main()
{
    bool flag = true;
    cout << "flag: " << flag << endl;       

    return 0;
}

sizeof

作用:计算一个对象或类型所占用的字节数

语法:sizeof(expression),其中 expression 可以是任意C++中的表达式,如变量、类型名、指针、数组等等

例子:

#include <iostream>
using namespace std;

int main()
{
    int a = 10;
    int a_size = sizeof(a);

    cout << "变量 a 的大小为: " << a_size << endl;  
    cout << "数据类型 int 的大小为: " << sizeof(int) << endl;
    return 0;
}

 此外我们可以使用sizeof计算数组的大小,比如

int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小