写在前面:大家好!我是
ACfun
,我的昵称来自两个单词Accepted
和fun
。我是一个热爱ACM的蒟蒻。这篇博客来梳理一下C/C++ 中不同数据类型的范围,包括char,short ,int ,long,long long等等。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง
速查表
注意
上面的速查表中我为什么写了两个 long 的范围呢?
主要的原因就是在不同的编译器中长整形变量 long 的字节数不一定的一样的,有的是 4 位而有的是 8 位。比如在Dev C++ 中我们输出 sizeof(long) 发现结果为 4 ,但是我们在力扣的编辑器中输出 sizeof(long) 的结果却是 8。在 Clion 中的结果也是 8。所以在做题的时候我们一定要注意这个地方,防止出现数据溢出的情况。
测试
测试代码
#include<iostream>
#include<climits>
using namespace std;
int main() {
cout << "int 最大值:" << INT_MAX << " " << " 最小值:" << INT_MIN << " "<< "字节数:" << sizeof(int) << " Bytes" << endl;
cout << "long 最大值:" << LONG_MAX << " " << " 最小值:" << LONG_MIN << " "<< "字节数:" << sizeof(long) << " Bytes" << endl;
cout << "long long 最大值:" << LLONG_MAX << " " << " 最小值:" << LLONG_MIN << " " << "字节数:" << sizeof(long long) << " Bytes" << endl;
cout << "unsigned long 最大值:" << ULONG_MAX << " " << "字节数:" << sizeof(long) << " Bytes" << endl;
return 0;
}
Dev C++的结果
LeetCode编辑器的结果
测试结果总结
通过以上测试我们可以发现在不同的编译器中执行同样一段代码结果是不同的。所以在我们做题时一定要注意这个差别,最好是提前使用 sizeof() 函数查看一下 long 变量的字节数。
头文件climits中的符号常量
在测试中我们使用了#include<climits>
头文件,通过这个头文件我们可以输出变量的最大最小值。下面是该头文件中的所有符号常量,我们可以通过这些常量查看不同变量的数据范围。
在#include<climits>存有各个类型的最大值和最小值
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN 保留全部精度的float类型正数最小值
FLT_MAX float类型正数最大值
我是ACfun,感谢大家的支持!
来源:oschina
链接:https://my.oschina.net/u/4407103/blog/4497680