C++常见数据类型的 数据范围 及其 输入、输出总结

版权声明:个人学习笔记记录 https://blog.csdn.net/Ratina/article/details/84139932

写个总结记录一下这些基础知识,个人感觉是一些较为常见的数据类型,并且补充了一些个人认为要注意的点和一些理解。

一、整型

  • 数据范围
数据类型 别名 字节数(Byte) 取值范围
short short int,signed short int 2 (16bit) –32,768 ~ 32,767
unsigned short unsigned short int 2 (16bit) 0 ~ 65,535
int signed int * 由操作系统决定,现常见为4字节 (32bit)  即-2,147,483,648 ~ 2,147,483,647 (10位数)
unsigned int unsigned * 由操作系统决定,现常见为4字节 (32bit)  即0 ~ 4,294,967,295 (10位数)
long long int,signed long int 4 (32bit) –2,147,483,648 ~ 2,147,483,647 (10位数)
unsigned long unsigned long int 4 (32bit) 0 到 4,294,967,295 (10位数)
long long * 8 (64bit) –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (19位数)
__int8 char,signed char 1 (8bit) –128 ~ 127
__int16 short,short int,signed short int 2 (16bit) –32,768 ~ 32,767
__int32 signed,signed int 4 (32bit) –2,147,483,648 ~ 2,147,483,647 (10位数)
__int64 * 8 (64bit) –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (19位数)

Ps.
①关于在short、int、long前加上unsigned

实质是将符号位也用于表示数据,使得最大值扩大一倍,但只能表示正数(无符号)。
以short和unsigned short为例(均为2字节,即16位)

short 1位符号位,15位数据位 数据范围为 -2^15 ~ 2^15-1
unsigned shor 无符号位,16位数据位 数据范围位:0 ~ 2^16-1

②关于__int8、__int16、__int32 和 __int64
2条下划线,数字代表占用内存位数
数据范围上等同于char、short、long 和 long long

  • 输入、输出
  1. scanf() 和 printf()
数据类型 输入用格式字符 输出用格式字符
short %hd %hd
int %d %d
unsigned int %u %u
long %ld %ld
long long %lld 或 %I64d %lld 或 %I64d
__int64 %I64d %I64d

Ps.
①重点注意long long 和 __int64,这两个都可以用来存储较大的数据,但上述的输入输出格式字符并不一定正确,具体和IDE有关,详见:https://blog.csdn.net/Thunders01/article/details/38879553

②在int为32位 (4字节) 的操作系统中,int和long,%d和%ld是完全等价的。

③应注意格式字符是将数据当作该格式进行输入输出,并不存在语法错误。
 如果int类型变量里面存的数据不超过short类型的表示范围,是可以使用%hd输入输出的,但如果超过范围,会发生截断,导致数据丢失。
 同理,可以使用%d来输入输出short类型数据。

  1. cin和cout

    根据数据类型自动输入输出,cin与scanf()一样以空格、tab或换行作为分隔符。
    需要注意的是部分编译器cin,cout和__int64并不兼容。
    应使用:
    long long a;    或    __int64 a;
    cin>>a;           scanf(“%I64d”,&a);
    cout<<a;           printf(“%I64d”,&a);

二、浮点型

  • 数据范围
数据类型 字节数(Byte) 数据范围
float 4 (32bit) 3.4E +/- 38 (7 digits)
double 8 (64bit) 1.7E +/- 308 (15 digits)

另外的对于long double,多见于12字节,但C至少保证long double与double精度相同。

  • 输入、输出
  1. scanf() 和 printf()
数据类型 输入用格式字符 输出用格式字符
float %f %f、%e、%E
double %lf %f、%lf、%e、%E

应特别注意,对于double类型读入是scanf("%lf",&a),输出用%f即可。

扫描二维码关注公众号,回复: 4269868 查看本文章
  1. cin和cout
    根据数据类型自动输入输出。

三、其他数据类型

数据类型 字节数(Byte) 取值范围
char 1 (8bit) –128 ~ 127
bool 1 (8bit) true 或 false
指针型 4 (32bit) *
size_t 4 (32bit) 或 8 (64bit) *

Ps.
①指针型可以利用printf("%p",pointer)来打印该指针指向的地址。(十六进制格式)
②size_t是sizeof()的返回值类型,其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为int并赋值给int类型的变量。
③char类型详见 这里

此外:表示整数、字符和布尔值的算术类型合称为整型(integral type)

参考资料:https://blog.csdn.net/zhanggx123/article/details/79221157
     https://www.cnblogs.com/ChenDinghao/p/6480937.html
     https://blog.csdn.net/xuexiacm/article/details/8122267

猜你喜欢

转载自blog.csdn.net/Ratina/article/details/84139932
今日推荐