C++--《第三章》

前言

在之前我们已经了解了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(假);在赋值的时候可以直接使用truefalse这两个标识符进行赋值,除此之外还可以通过整型数值进行赋值非零(包含正数和负数)的数值在bool中会被转换为truebool中会被转换为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
请按任意键继续. . .

 微信扫码关注《小九爱学习》

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值