类型转换的相关练习

类型转换的规则:

1.默认由窄的数据类型转换成宽的数据类型
2.同级别的无符号类型比有符号类型宽
3.不同类型运算时,从整形起
4.窄边宽时,左边补符号位
类型转换分两类:
显式转换:告诉转换的类型(强转)
隐式转换:没有明确告诉转换的类型

类型转换的相关例题:

解析:
1.char a =-1
2.char类型数据的取值范围为-128~127,数字呈环状,首尾相接,所以b 255就等于-1
3.unsigned char c = a,将a转换成unsigned char型,a:11111111,unsigned char型计算得255
4.b=-1,将b转换成无符号char型,b:11111111,unsigned char型计算得255
5.a:11111111,转换成int型,前面补符号位1,所以e:11111111111111111111111111111111,为-1
6.b:11111111,转换成int型,前面补符号位1,所以f:11111111111111111111111111111111,为-1
7.a:11111111,转换成unsigned int型,前面补符号位1,所以g:11111111111111111111111111111111,因为g是无符号类型,所以计算得 2^32-1,等比数列的前n项和+1
8.b:11111111,转换成unsigned int型,前面补符号位1,所以h:11111111111111111111111111111111,因为h是无符号类型,所以计算得 2^32-1,等比数列的前n项和+1

在这里插入图片描述

解析:
1.因为char类型数据的取值范围为-128~127,所以b1=200-256=-56
2.因为unsigned char类型数据的取值范围为0~256,所以c1=200
3.int m1 = b1,将b1char型转换成int型,b1:11001000,前面补符号位1,m1:11111111111111111111111111001000计算得-56
4.int m1 = c1,将c1 unsigned char型转换成int型,c1:11001000,前面补符号位0,n1:00000000000000000000000011001000计算得200

在这里插入图片描述
解析:
1.d1=200
2.d1为int型,强转成char型,即保留低地址8位,e1:11001000计算得-56
3.d1 = e1,char类型转换成int型,e1:11001000,前面补符号位1,d1:11111111111111111111111111001000计算得-56

在这里插入图片描述
解析:
1.char i = (char) 200,强转,显式转换,因为char类型范围为-128~127,所以i=200-256=-56
2.int j= (int)12.5,强转,显式转换,j保留整数部分j=12
3.int l= k+25,因为k是char类型,char类型和int型相加存在着隐式转换,将k转换成int型,k转换成int型等于100,即l=100+25=125

在这里插入图片描述

解析:
1.if(m>-1),因为m是unsigned short类型,数字默认是int型,所以m要转换成int型,前面补符号位,m:00000000000000000000000000001010计算得10所以输出“m>-1”
2.if(n>-1),因为-1是int型,n是unsigned int型,-1转换成unsigned int型,前面补符号位1,即11111111111111111111111111111111计算得
2^32-1,所以输出“n<=-1”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值