前言
在之前我们已经了解了C++
中变量的声明方式,我们可以在变量
的内存空间
中储存数据
;当然了,万变不离其宗,C++
赋值同样也是使用=
号来进行的;同样,数据的类型
也有很多,本章我们重点针对算术类型
来做详细讲解;C++
中的算术类型
大致包含了整型、浮点型、字符和布尔型
这四种,除去布尔型
我们还将其他算术类型
分为 signed(有符号类型)
和unsigned(无符号类型)
,这里的有符号
和无符号
同学们可以理解为是否包含负数
即可,下面会做详细的讲解。
正文
首先整型
就是我们所熟悉的整数
,在竞赛中使用的次数还是蛮多的,C++
中的整型
分为:short(短整型)、int(整型)、long(长整型)、long long(超长整型)
,它们所占的大小依次为:16位、32位、32位、64位
,这四种类型默认都是有符号类型,我们可以通过在前面添加unsigned
修饰从而获取无符号类型;
通常情况下,我们在使用整型的时候很少会明确告诉你不能为负数
的情况,所以我们更多的去讲解有符号类型
,另外因为在运算中short(短整型)
表示的数据范围太小,而int(整型)
和long(长整型)
表示的数据范围相同,所以在竞赛中我们更多的使用int(整型)
和long long(超长整型)
这两种整数类型
进行程序设计
。
以下程序将会打印出每种整数类型的最大值和最小值以及所占内存字节数:
#include<iostream>
using namespace std;
// sizeof()函数可以用来获取各中类型在系统上储存的位数(单位:字节)
// 1TB(太字节) = 1024GB(吉字节)、1GB = 1024MB(兆字节)、1MB = 1024KB(千字节)、1KB = 1024Byte(字节)、1Byte = 8bit(位)
// 一般常用的内存单位到TB就够了,当然上面还有更大的,有兴趣可以去了解一下。
int main(){
short short_max = SHRT_MAX; // SHRT_MAX可用来查看short类型中最大值
short short_min = SHRT_MIN; // SHRT_MIN可用来查看short类型中最小值
unsigned short ushort_max = USHRT_MAX; // USHRT_MAX可用来查看unsigned short类型中最大值
cout << "short(短整型): \t\t" << "\t\t所占字节数:" << sizeof(short) << "\t\t最大值:" << short_max << "\t\t\t\t最小值:" << short_min << endl;
cout << "unsigned short(无符号短整型): \t" << "\t所占字节数:" << sizeof(unsigned short) << "\t\t最大值:" << ushort_max << "\t\t\t\t最小值:0" << endl;
int int_max = INT_MAX; // INT_MAX可用来查看int类型中最大值
int int_min = INT_MIN; // INT_MIN可用来查看int类型中最小值
unsigned int uint_max = UINT_MAX; // UINT_MAX可用来查看unsigned int类型中最大值
cout << "\nint(整型): \t\t" << "\t\t所占字节数:" << sizeof(int) << "\t\t最大值:" << int_max << "\t\t\t最小值:" << int_min << endl;
cout << "unsigned int(无符号整型): \t" << "\t所占字节数:" << sizeof(unsigned int) << "\t\t最大值:" << uint_max << "\t\t\t最小值:0" << endl;
long long_max = LONG_MAX; // LONG_MAX可用来查看long类型中最大值
long long_min = LONG_MIN; // LONG_MIN可用来查看long类型中最小值
unsigned long ulong_max = ULONG_MAX; // ULONG_MAX可用来查看unsigned long类型中最大值
cout << "\nlong(长整型): \t\t" << "\t\t所占字节数:" << sizeof(long) << "\t\t最大值:" << long_max << "\t\t\t最小值:" << long_min << endl;
cout << "unsigned long(无符号长整型): \t" << "\t所占字节数:" << sizeof(unsigned long) << "\t\t最大值:" << ulong_max << "\t\t\t最小值:0" << endl;
long long llong_max = LLONG_MAX; // LLONG_MAX可用来查看lomg long类型中最大值
long long llong_min = LLONG_MIN; // LLONG_MIN可用来查看long long类型中最小值
unsigned long long ullong_max = ULLONG_MAX; // ULLONG_MAX可用来查看unsigned long long类型中最大值
cout << "\nlong long(超长整型): \t\t" << "\t所占字节数:" << sizeof(long long) << "\t\t最大值:" << llong_max << "\t\t最小值:" << llong_min << endl;
cout << "unsigned long long(无符号超长整型): \t" << "所占字节数:" << sizeof(unsigned long long) << "\t\t最大值:" << ullong_max << "\t\t最小值:0" << endl;
return 0;
}
执行结果:
short(短整型): 所占字节数:2 最大值:32767 最小值:-32768
unsigned short(无符号短整型): 所占字节数:2 最大值:65535 最小值:0
int(整型): 所占字节数:4 最大值:2147483647 最小值:-2147483648
unsigned int(无符号整型): 所占字节数:4 最大值:4294967295 最小值:0
long(长整型): 所占字节数:4 最大值:2147483647 最小值:-2147483648
unsigned long(无符号长整型): 所占字节数:4 最大值:4294967295 最小值:0
long long(超长整型): 所占字节数:8 最大值:9223372036854775807 最小值:-9223372036854775808
unsigned long long(无符号超长整型): 所占字节数:8 最大值:18446744073709551615 最小值:0
--------------------------------
Process exited after 0.04554 seconds with return value 0
请按任意键继续. . .
其次浮点型
就是我们所熟悉的小数
,C++
的浮点型
分为:float(浮点数)、double(双精度浮点数)
,它们所占的大小依次为:32位、64位
,另外还有一个long double(长双精度浮点数)
所占内存为128
位;需要注意的是浮点型
不能使用unsigned
修饰从而获取无符号类型
,因为浮点数
是由整数部分
、小数部分
和指数部分
组成,在进行运算的时候是分开计算的,所以浮点数
无法使用unsigned
进行修饰。
一般我们在比赛中在遇到浮点数
的时候常用double(双精度浮点数)
来声明,主要原因就是double(双精度浮点数)
相比float(浮点数)
所能表示的数据范围更广,精度更高。
以下程序将会打印出每种浮点数类型的最大值和最小值以及所占内存字节数:
这里我们通过标准库limits
来获取极值
,同学们也可以通过一下方式编写程序获取整型
里面的相应的极值
,不使用上面的常数
。
#include<iostream>
#include <limits>
using namespace std;
int main(){
float float_max = numeric_limits<float>::max();
float float_min = numeric_limits<float>::min();
cout << "float(浮点数): \t\t\t" << "所占字节数:" << sizeof(float) << "\t最大值:" << float_max << "\t最小值:" << float_min << endl;
double double_max = numeric_limits<double>::max();
double double_min = numeric_limits<double>::min();
cout << "double(双精度浮点数): \t\t" << "所占字节数:" << sizeof(double) << "\t最大值:" << double_max << "\t最小值:" << double_min << endl;
long double ldouble_max = numeric_limits<long double>::max();
long double ldouble_min = numeric_limits<long double>::min();
cout << "long double(长双精度浮点数): \t" << "所占字节数:" << sizeof(long double) << "\t最大值:" << ldouble_max << "\t最小值:" << ldouble_min << endl;
return 0;
}
执行结果:
float(浮点数): 所占字节数:4 最大值:3.40282e+038 最小值:1.17549e-038
double(双精度浮点数): 所占字节数:8 最大值:1.79769e+308 最小值:2.22507e-308
long double(长双精度浮点数): 所占字节数:16 最大值:1.18973e+4932 最小值:3.3621e-4932
--------------------------------
Process exited after 0.04478 seconds with return value 0
请按任意键继续. . .
在C++
中的字符类型
以char
进行声明,所占空间为1字节
,也就是8位
;学习过Python
的同学需要注意这里的字符
并不是字符串
!在C++
中字符常量使用ASCII(美国信息交换标准代码)码
统一编码,常量
同学们可以理解为不可改变的量,字符常量
必须使用单引号
标注,另外字符常量
可以用来给字符变量
进行赋值
。
ASCII字符编码表
#include<iostream>
using namespace std;
int main(){
char char_a = 'a'; // 这里的a为字符常量必须用单引号标注,char_a为字符变量,通过=将常量赋值给变量
cout << "char_a中储存的字符为:" << char_a << endl;
cout << "char(字符): \t\t" << "所占字节数:" << sizeof(char);
return 0;
}
执行结果:
char_a中储存的字符为:a
char(字符): 所占字节数:1
--------------------------------
Process exited after 0.03865 seconds with return value 0
请按任意键继续. . .
最后C++
中的布尔型以bool
进行声明,它的取值只能是true(真)
或者false(假)
;在赋值
的时候可以直接使用
true或
false这两个
标识符进行
赋值,除此之外还可以通过
整型数值进行赋值
,非零(包含正数和负数)
的数值在bool
中会被转换为true
,零
在bool
中会被转换为false
,建议在对布尔型``赋值
的时候使用true
或者false
,因为对于计算机来说true和false本身就是1和0,以下程序将会展示效果。
#include<iostream>
using namespace std;
int main(){
bool bool_true = true;
bool bool_false = false;
bool bool_true_1 = 1;
bool bool_false_0 = 0;
cout << "bool_true输出的为:" << bool_true << endl;
cout << "bool_false输出的为:" << bool_false << endl;
cout << "bool_true_1输出的为:" << bool_true_1 << endl;
cout << "bool_false_0输出的为:" << bool_false_0 << endl;
return 0;
}
执行结果:
bool_true输出的为:1
bool_false输出的为:0
bool_true_1输出的为:1
bool_false_0输出的为:0
--------------------------------
Process exited after 0.0388 seconds with return value 0
请按任意键继续. . .
微信扫码关注《小九爱学习》