C/C++中的data type

本文介绍了C++中的基本数据类型及其如何在内存中分配空间。详细解释了char、int、float、double等类型,并讨论了如何通过short、long、signed、unsigned等关键字改变数据类型的取值范围。

在现代编程语言中,语言本身都支持一定的数据类型,称为built-in data type,也称为基本数据类型。语言中的数据类型实质上是为了便于告诉编译器应该在内存中分配多大的空间,以及运行对这个分配的空间进行什么样的操作。也就是说,对不同的数据类型,编译器会在内存中分配不同大小的空间,允许的操作也是不同。

  除了基本数据类型外,还可以定义抽象数据类型。所谓抽象数据类型,就是编译器本身不认识,而是通过读取头文件中所声明的信息来学着操作的那种数据类型。例如,用户自定义的各种类等就是属于这种抽象数据类型的。

    c++中的基本数据类型直接来自于c中的基本数据类型。它规定了各种基本数据类型能容纳的最大值和最小值的范围,然后编译器就会根据这些最大值,最小值规范,在内存中分配合适大小的足以容纳该范围中的所有数据的最小内存以表示这些值,这就是这些基本数据类型在内存中的实现。 基本类型的取值允许的范围在系统头文件limits.h 和float.h中声明了。

   c/c++中有4种基本数据类型:char int float double。  编译器在内存中为char至少开辟8bit的内存空间来存放其值,int是16bit, 。然后通过4个关键字short ,long, signed,unsigned放在这些基本类型前面,来改变这些基本类型的范围,也就是改变其语义。基本类型定义了该基本类型的取值范围从而确定了在内存中为了能表示该范围而应该至少分配的内存的大小,而关键字则说明了所分配的这些bit应该如何使用,即那些bit表示哪个含义。

   具体实现时,则只要能够满足上述语义就可以了,例如在一个64位的机器上(也就是以64bit为基本的内存分配单位的机器)可能short int,int,long int都分配了64bit,这样肯定能容纳上述语义定义的取值范围,甚至还有多余的空间。

   short ,long 可以用来放在int,float,double前面,而signed,unsigned只能放在char和int前面,但是也有一些限制。具体的说,只能有: float,double,long double; short int, int, long int; signed int, unsigned int; signed char, unsigned char;这几类,其它的都是非法的。

    

    signed ,unsigned告诉编译器是否把int/char的第一个bit看成符号位(faloat/double始终是有符号的,也就是说编译器始终将该类型的第一个bit看作符号位),如果第一个bit作为值的bit,那么就可以用来表示更大范围的非负数了。默认情况下,int是有符号的,char默认是无符号的,除非指定:signe d char。

 

 sizeof操作符可以用来查看某个数据类型在内存中所分配的内存空间的大小(以字节为单位),编译器为了确保各种基本类型的取值范围,可能在不同的os不同的machine上会分配不同大小的bits,所以在不同环境下,sizeof的值可能是不同的。

  short int ,int ,long int可以简写成:short, int, long。

s

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walkingmanc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值