什么是数据类型?
在变量一章中,我们提到过,变量就是存储数据的容器,根据数据大小不同选择合适的容器存储。那么,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
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;
输出:
8
4
4
16
布尔型
1.布尔类型用来判断真假,结果只有 true 和 false 两种
2.true转换为整型值为 1,false 转换为整型值为 0
- 非 0 值可以隐式转换为 true,而 0 转换为 false
字符型
ASCII码:
常用转义字符:
公众号:和黑猫学编程 后台回复【223659】
领取最新版本《C++语法闯关》电子书