C++类型转换

                                          C++类型转换

一、类型所能表示的值的范围决定了转换的过程

1、非布尔类型的算术值赋给布尔类型,初始值为0,则结果为false;否则为true。 

bool a = 42;  // a == true
bool b = 0;   // b == false

2、布尔类型赋给非布尔类型,初始值为false,则结果为0,初始值为true,则结果为1。

int c = a;  // c == 1
int d = b;  // d == 0

3、浮点数赋给整型,进行近似处理;结果值将仅保留浮点数中小数点之前的部分。

int e = 3.14;  // e == 3

4、整型赋给浮点类型,小数部分为0;如果该整型所占的空间超过了浮点类型的容量,精度可能损失。

float f = 520; // f == 520.0

5、赋给无符号类型一个超出它表示范围的值,结果是初始值对无符号类型表示数值总数取模后的余数。

unsigned char g = -1;  // g == 255, -1转换为无符号数为255,255对256(unsigned char所能表示的数一共有256个)取模后的余数为255
unsigned short h = -10;  // h == 65526, -10转换为无符号数为65526,65526对65536(unsigned short所能表示的数一共有65536个)取模后的余数为65526

6、赋给带符号类型一个超出它表示范围的值,结果是未定义的。此时,程序可能继续工作、可能崩溃,也可能生成垃圾数据。

signed char i = 256;  // i的值未定义

 

二、含有无符号类型的表达式

当一个表达式中既有无符号整型,又有带符号整型,则带符号整型转换为相应的无符号整型,然后进行算数计算。

如:

int i = -42;
unsinged int j = 10;

unsigned int k = i + j;  // k == 4294967264(假设int长度为32bit)
int t = i + j;  // t == -32

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值