C/C++ 各种变量的数据范围

怎甘沉沦 提交于 2020-08-16 16:36:59

 写在前面:大家好!我是ACfun,我的昵称来自两个单词Acceptedfun。我是一个热爱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,感谢大家的支持!
暴力出奇迹!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!