为什么错了的

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小班 2019-05-15 18:32:21

同学你好,1、同学的理解没有错,但是字符的强转是在计算机中进行二进制的转换,会出现一些失误,比如说精度丢失等。

2、char c=(char)67832; ,因为超出char数据的范围,65535是最大的,会溢出,所以得到的就是不可预知的内容!

3、不同的编码格式也会在一定程度上影响编码值的转换,例如:

在UTF-8的编码下:

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

在GBK的编码格式下:

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

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



好帮手慕小班 2019-05-15 17:30:35

同学你好,1、67832属于int类型的数值,转为char类型要添加强转,例如:

     char c=(char)67832;

2、char声明类型写错成了chea,同学chea  c1=(char)n中chea修改为char就可以了。

3、L=f;转化失败,虽然float是四个字节,long是8个字节,但是float是以科学计数法来存储数据,所以float的范围远远大于long类型,所以float类型的数据转为long类型的数据需要强转,例如:

   L =(long)f;

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

  • 提问者 慕仔42331 #1
    谢谢 还有一个问题 如果把第一个错误改过来之后 char c=(char)67832; 67832在ASCLL码表中已经超出了的吧,输出结果为什么是一个点呢?而不是67832 如果在ASCLL码中的值,可以直接char c=76;输出c=L.. 请问我哪里理解错了吗
    2019-05-15 17:55:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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