int转char

int转char

 1: char a = 98;
 
 2:  int a = 98;
     char b = a;//a=98,  可以理解为char b = 98;
     老师为什么1是正确的 2是错的;是不是和编译器有关?


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

        同学你好,1、首先我们来看一下int和char所能代表的数据范围: int   4字节  -2^31~2^31-1也就是-2147483648到2147483647,而char   2字节   是一个单一的16位字符 ,取值范围是从0到65535!

        2、在普遍的ASCII中就有对这些字符对应的编码哦,例如

http://img1.sycdn.imooc.com//climg/5d20070d0001e7e806350213.jpg

所以java中,可以直接将一个(不超过char的范围的)数字赋值给一个char变量,即可输出其结果:

http://img1.sycdn.imooc.com//climg/5d2007790001d60305000322.jpg

可以看到,正确输出了98的ascii码所对应的字符:‘b’。

    3、从int和char的数据范围的比较,我们可以得到int是比char范围更大的,如果直接将一个int类型的数据转为char类型,在转换时,需要将这个int类型的数据强制转为char哦!

http://img1.sycdn.imooc.com//climg/5d20087800010a0f05310269.jpg

        4、当char类型的数据直接赋值时,如果超过了65535的范围,也是需要强制转换的哦!

http://img1.sycdn.imooc.com//climg/5d2008e00001a57604910156.jpg

        如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

敏捷丶 2019-07-05 23:45:46

int类型赋值给char类型要进行强制类型转换,char b=(char)a; 这样应该就可以了

  • 提问者 BraveSong灬 #1
    我的问题不是这个 你看 char a = 98;这是对的 98是int字面值把他给char类型变量a也不用强转会隐式转换。
    2019-07-05 23:58:42
  • 敏捷丶 回复 提问者 BraveSong灬 #2
    char赋值int隐转,int赋值char得强转,同学你可以看看关系图
    2019-07-06 00:01:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师