【C/C++】常用数字类型及边界值调用方法

C/C++的常用数字类型

C/C++中的数字类型按照存储格式可分为整型和浮点型两类,其中整型又包括带符号型和无符号型两种情况。
整型包括short、int、long、long long 及各自的无符号类型unsigned short、unsigned int、unsigned long、unsigned long long;
浮点型包括float、double、long double,之所以浮点型没有unsigned类型,简单来说是因为,浮点数规定内存中数字的首位必须是符号位,而unsigned要求将首位的符号位也用来表示数据,二者相互矛盾。

常用数字类型简介

下表用于说明在VS2015编译器x86平台下,每种数字类型的占用位数、字节数、表示范围等。

数字类型位数字节数范围(整数)范围(指数)备注
short162-32768 ~ 32767-215 ~ 215-1至少16位
int324-2147483648 ~ 2147483647-231 ~ 231-1>=short
long324-2147483648 ~ 2147483647-231 ~ 231-1至少32位,>=int
long long648-9223372036854775808 ~ 9223372036854775807-263 ~ 263-1至少64位,>=long
unsigned short1620 ~ 655350 ~ 216
unsigned int3240 ~ 42949672950 ~ 232
unsigned long3240 ~ 42949672950 ~ 232
unsigned long long648184467440737095516150 ~ 264
float3241.17549e-38 ~ 3.40282e+38
double6482.22507e-308 ~ 1.79769e+308
long double6482.22507e-308 ~ 1.79769e+308精度不低于double,IEEE754标准为128位,实际由编译器和硬件平台决定

边界值调用

C语言中通过使用库文件 < limits.h > 来调用多种数字类型的上下界,而C++中可用库文件< limits >调用(部分边界值引用自<limits.h>文件),除上下界外也包含有其他关于数字类型的内容,大家有兴趣可以看下源码。以下代码中列举了常用上下界的调用方法:

#include <iostream>
#include <limits>
#include <limits.h>

using namespace std;

int main()
{
	cout << "\n\n*************** C ****************" << endl;
	cout << "整型:" << endl;
	cout << "short_min:" << SHRT_MIN << endl;
	cout << "int_min:" << INT_MIN << endl;
	cout << "long_min:" << LONG_MIN << endl;
	cout << "long long_min:" << LLONG_MIN << endl;
	// unsigned 类型没有MIN下界定义(均为0)
	cout << "unsigned short_max:" << USHRT_MAX << endl;
	cout << "unsigned int_max:" << UINT_MAX << endl;
	cout << "unsigned long_max:" << ULONG_MAX << endl;
	cout << "unsigned long long_max:" << ULLONG_MAX << endl;
	cout << "浮点型:" << endl;
	cout << "float_min:" << FLT_MIN << endl;
	cout << "float_max:" << FLT_MAX << endl;
	cout << "double_min:" << DBL_MIN << endl;
	cout << "double_max:" << DBL_MAX << endl;
	cout << "long double_min:" << LDBL_MIN << endl;
	cout << "long double_max:" << LDBL_MAX << endl;

	cout << "\n\n*************** C++ ****************" << endl;
	cout << "整型:" << endl;
	cout << "int_min:" << numeric_limits<short>::min() << endl;
	cout << "int_min:" << numeric_limits<int>::min() << endl;
	cout << "long_min:" << numeric_limits<long>::min() << endl;
	cout << "long long_min:" << numeric_limits<long long>::min() << endl;
	// unsigned 类型,有上下界函数max()和min(),这里仍旧用上界表示,下界min()均返回0
	cout << "unsigned short_max:" << numeric_limits<unsigned short>::max() << endl;
	cout << "unsigned int_max:" << numeric_limits<unsigned int>::max() << endl;
	cout << "unsigned long_max:" << numeric_limits<unsigned long>::max() << endl;
	cout << "unsigned long long_max:" << numeric_limits<unsigned long long>::max() << endl;
	cout << "浮点型:" << endl;
	cout << "float_min:" << numeric_limits<float>::min() << endl;
	cout << "float_max:" << numeric_limits<float>::max() << endl;
	cout << "double_min:" << numeric_limits<double>::min() << endl;
	cout << "double_max:" << numeric_limits<double>::max() << endl;
	cout << "long double_min:" << numeric_limits<long double>::min() << endl;
	cout << "long double_max:" << numeric_limits<long double>::max() << endl;
    return 0;
}

代码输出结果如下:
VS2015数字类型上下界

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值