C/C++常用数据类型梳理

C/C++常用数据类型梳理

常用数据类型

数据类型占用字节数取值范围
short2-32,768 ~~ 32,767
-215~~215-1
int4-2,147,483,648 ~~ 2,147,483,647
-231~231-1
long4-2,147,483,648 ~~ 2,147,483,647
-231~231-1
long long8-9,223,372,036,854,775,808 ~~ 9,223,372,036,854,775,807
-263 ~~ 263-1
float41.17549e-038 ~~ 3.40282e+038
double82.22507e-308 ~~ 1.79769e+308
bool10 ~~ 1
char1-128 ~~ 127
-28 ~~ 28-1

代码实现

附一段C++代码:

#include<iostream>
#include<iomanip>
#include<limits>
using namespace std;
int main(){
    cout<<" ==================================================================="<<endl;
    cout<<"| 数据类型 |占用字节数|       最小取值       |       最大取值       |"<<endl;
    cout<<" -------------------------------------------------------------------"<<endl;
    cout<<"|short     |"<<left<<setw(10)<<sizeof(short)<<"|"<<
		setw(22)<<(numeric_limits<short>::min)()<<"|"<<
		setw(22)<<(numeric_limits<short>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
    cout<<"|int       |"<<left<<setw(10)<<sizeof(int)<<"|"<<
		setw(22)<<(numeric_limits<int>::min)()<<"|"<<
		setw(22)<<(numeric_limits<int>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
    cout<<"|long      |"<<left<<setw(10)<<sizeof(long)<<"|"<<
		setw(22)<<(numeric_limits<long>::min)()<<"|"<<
		setw(22)<<(numeric_limits<long>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
    cout<<"|long long |"<<left<<setw(10)<<sizeof(long long)<<"|"<<
		setw(22)<<(numeric_limits<long long>::min)()<<"|"<<
		setw(22)<<(numeric_limits<long long>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
    cout<<"|float     |"<<left<<setw(10)<<sizeof(float)<<"|"<<
		setw(22)<<(numeric_limits<float>::min)()<<"|"<<
		setw(22)<<(numeric_limits<float>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
    cout<<"|double    |"<<left<<setw(10)<<sizeof(double)<<"|"<<
		setw(22)<<(numeric_limits<double>::min)()<<"|"<<
		setw(22)<<(numeric_limits<double>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
	cout<<"|bool      |"<<left<<setw(10)<<sizeof(bool)<<"|"<<
		setw(22)<<(numeric_limits<bool>::min)()<<"|"<<
		setw(22)<<(numeric_limits<bool>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
	cout<<"|char      |"<<left<<setw(10)<<sizeof(char)<<"|"<<
		setw(22)<<(int)(numeric_limits<char>::min)()<<"|"<<
		setw(22)<<(int)(numeric_limits<char>::max)()<<"|"<<endl;
	cout<<" -------------------------------------------------------------------"<<endl;
    return 0;
}

运行结果:
在这里插入图片描述
根据上述代码,可自行测试其他的数据类型。

1.关于int类型与long类型的占用字节数、取值范围相同:
      之所以有“整型”和“长整形”两种不同类型,是C语言在诞生时发明者规定好的,前者存储的整数的值域小于后者。
      早期的操作系统是16位系统,int用二字节表示,范围是-32768 ~ 32767;long用4字节表示,范围是-2147483648 ~ 2147483647。
      后来发展到32位操作系统,int 用4字节表示,与long相同。
      目前的操作系统已发展到64位操作系统,但因程序编译工艺的不同,两者表现出不同的差别:
32位编译系统:int占四字节,与long相同。
64位编译系统:int占四字节,long占8字节,long数据范围变为:-263~263-1

2.如何表示各种数据类型的最大值?
      利用limits.h库。表示最大值为TYPE_MAX,最小值为TYPE_MIN。(没有提供浮点数)
      如:

#include <stdio.h>
#include <limits.h>
int main(){
   printf("The number of bits in a byte %d\n", CHAR_BIT);
   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);
   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX); 
   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);
   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);
   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX);  
   return(0);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值