C++标准数据类型深度解析

发表时间: 2023-11-16 10:50

什么是数据类型?

变量一章中,我们提到过,变量就是存储数据的容器,根据数据大小不同选择合适的容器存储。那么,C++中有哪些大小不同的数据容器呢?我们先来看一个数据类型总览,对C++数据类型有一个大体的认知。

整型

整型最常见的就是 int,占 4 个字节,即 4 * 8 = 32 比特,可以表达的整数个数为 232232,由于包括负数,0,和正数,实际表示范围为 - 231231 ~ 231231-1,如果是 unsigned int,即没有负数区间,表示范围为 0 ~ 232232-1。(暂时我们姑且这么认为,后面会讲到原码、反码和补码原理)。

cout << sizeof(123) << " " << sizeof(int) << endl;输出:4 4

然而,当 int 无法满足存储需要时,我们需要更大的数据类型 long long,占 8 个字节。

cout << sizeof(123456789123456789) << " " << sizeof(long long) << endl;输出:8 8

如果我们要将 123 这个整数声明为 long long 类型,可以加上后缀 ll 或 LL。

cout << sizeof(123ll) << " " << sizeof(456LL) << endl;输出:8 8

在实际编程过程中,如果需要多次使用 long long,我们可以通过 typedef 关键字将 long long 重命名为 LL。(注意:程序中最好不要出现小写 l,容易和数字 1 混淆)。

#include <iostream>using namespace std;typedef long long LL;int main() {    LL a = 123;    cout << a << " " << sizeof(a) << endl;	return 0;}输出:123 8

那么,我们什么时候需要用到 long long 呢?比如:

1.当题目中数据范围明显超出 int,比如 1000000 个数字,每个数字范围都是 int,求和。

2.比较隐晦,比如 20 的阶乘,结果 1 * 2 * 3 * …… * 20。

如果不确定,直接开 long long 空间。(大多数情况对结果没有影响,但是当涉及到位运算时候可能对结果有影响,需要事前评估一下)

什么是 short?long 和 long long 有什么区别?

在C++ primer,或者c++标准书中是这样规定的:sizeof(short) ≤ sizoef(int) ≤ sizeof(long) ≤ sizoef(long long)
它并没有回答各个数据类型的具体长度,而是由编译器自行决定。

在我们考试的系统中,short 占 2 个字节,long 占 8 个字节。(大多数书上写的是 4 字节,这并不适用于 NOI Linux2.0 系统)

浮点型

float 占 4 字节,保留有效位数 7 位,double 占 8 字节,保留有效位数 16 位。一般在算法竞赛中,我们都使用 double。

浮点型默认为 double 类型,当然也可以通过后缀 f、F、L 改变类型。

cout << sizeof(1.23) << endl;cout << sizeof(1.23f) << endl;cout << sizeof(1.23F) << endl;cout << sizeof(1.23L) << endl;输出:84416

布尔型

1.布尔类型用来判断真假,结果只有 true 和 false 两种

2.true转换为整型值为 1,false 转换为整型值为 0

3. 非 0 值可以隐式转换为 true,而 0 转换为 false

字符型

ASCII码:

常用转义字符:

相关推荐

C++语言入门

C++枚举算法,最直接有效的算法!

十四届蓝桥杯大赛青少年C++组STEMA选拔赛试题真题及解析

十四届蓝桥杯大赛青少年省赛C++组试题真题及解析

CSP复赛考试形式和NOI Linux2.0测评环境

信息学奥赛复赛对拍程序技巧