C++中数据数据的基本类型

C++中数据的基本类型

c++中数据基本类型包含整型与浮点型。C++对整型和浮点型提供了多种变体,以适合在不同情况下的使用

整型

整型就是表示没有小数部分的数字。c++中基本整型有char short int long long long,每一种整型又具有signend or unsigned2个形式。
c++提供的整型位数标准为:
- short至少16位
- int至少与short一样长
- long至少32位,且至少与int一样长
- long long 至少64位,且至少与long一样长
在我的电脑里,char short int long 和 long long分别对应的字节数为 1 2 4 4 8。
另外,可以通过头文件climits来查看各个基本类型的最大最小值。
在对无符号数和有符号数进行运算时候,注意数据溢出的情况。

USHRT_MAX+3 //结果为2
SHRT_MIN-1 //结果为32767
SHRT_MIN-2 //结果为32766
SHRT_MAX+1 //结果为-32768
SHRT_MAX+2// 结果为-32767
把有符号数赋值给无符号数是合法的:
正数的有符号数赋值给无符号数值是不变的
负数赋值给无符号数相当于是该负数对该类型的取值个数求模后的值。

浮点数

浮点数的类型包含了float double 和long double,分别表示单精度,双精度,扩展精度浮点数。在我电脑上,占的字节位数分别为4,8,8。其中float表示的浮点数的精度为6位,double表示的浮点数精度为10位。
浮点数在计算机中是怎么表示的呢:
浮点数表示方法是有IEEE754规定的 其中讲数字分解成3部分:符号位(s),指数部分(e),尾数部分(m)
单精度时:x = (-1)^s*(1.m)*2^(e-127) m 23为 e 8位 s 1位 共32位
双精度:x = (-1)^s*(1.m)*2^(e-1023) m 47为 e 16位 s 1位 共32位
比如数字3.75转化为float为例
将其转化为2进制为11.11
再将其转化为科学技术法有1.111*2^1
符号位s: 0
指数为e: e-127 = 1 故 e=128 e = 1000 0000
尾数m: 111000000000…
得最后数字表示方法为 0100 0000 0111 0000 0000 0000 0000 0000

类型转换

讲不同类型进行计算时,会进行类型转换。转换规则如下:
- 如果一个操作数时long double ,则另外一个数字转换为long double
- 否则,如果有一个数时double,则另外一个数字转化为double
- 否则,如果有一个数时float,则另外一个数字转化为float
- 否则,说明操作数都是整型,因此执行整型提升
- 在这种情况下,如果2个操作数都是有符号或无符号的,其中一个操作数级别比另外一个低,则转化为级别高的类型。
- 如果一个操作数为有符号的,另一个操作数为无符号的,且无符号操作数级别比有符号操作数高,则将有符号操作数转换为无符号操作数所属的类型
- 否则,如果有符号类型可表示无符号类型所有可能取值,则将无符号操作数转换为有符号数操作数所属的类型
- 否则,将2个操作数都转换为有符号类型的无符号版本。

整型提升

在计算表达式时候,c++将bool char unsigned char signed char 和short值转换为int。若short比int短,则unsigned short将转化为int,如short和int一样长,则unsigned short将转化为unsigned.

c++prrimer plus
c++primer

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值