(n为什么输出0,c为什么输出方框字符)

(n为什么输出0,c为什么输出方框字符)

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

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

3回答
好帮手慕小脸 2021-06-11 19:16:07

同学你好,是指如下这样吗?

http://img1.sycdn.imooc.com//climg/60c344c00919660405310232.jpg

如果是,char最大取值范围是65535,65536超出该范围时,会默认匹配ASCII码表中的字符,然后转换为int类型时会将字符对应的数值输出

祝学习愉快~

  • 提问者 做条咸鱼才最好 #1
    对啊,老师,就我图里面的,为什么n输出0,
    2021-06-11 19:38:36
  • 同学你好,1、char类型最大范围是65535,当char类型的定义值超过65535后,编译会标错,需要强转为char类型,强转过程中会出现精度丢失等问题,也就是我们说的数据丢失的问题,所以可能会出现一些误差,得不到原本需要的结果!所以65536强转后,并不一定得到的是65535这个结果。

        2、当65536强转后,输出的字符可能并不能识别,所以最后强转的结果转为int类型后,就是输出了对应空的字符内容,在ASCII码表中,0对应的就是空(也可以说是null)。

    注:有的电脑得到的结果就是空,因为这个和字符编码以及操作系统都有关系,比如,老师在自己的电脑中尝试输出,就是空和0。

    http://img1.sycdn.imooc.com//climg/60c427ae095f530a04600253.jpg

    祝学习愉快~

    2021-06-12 11:20:27
好帮手慕小脸 2021-06-11 17:21:22

同学你好,

1、因为赋值给int类型,所以会默认将其转化为ascii码对应的数值。可以理解为一种规定,这里同学记住就可以

2、Unicode与ASCII一样也是一种字符编码方法,它占用两个字节(0000H—FFFFH),容纳65536 个字符,这完全可以容纳全世界所有语言文字的编码。在Unicode 里,所有的字符都按一个字符来处理, 它们都有一个唯一的Unicode 码,这就解决了ASCII的信息冲突问题,且Unicode编码其前128个和ASCII一模一样,但是从128开始包含更多字符。

祝学习愉快~

  • 提问者 做条咸鱼才最好 #1
    老师。还是有不懂的地方。char65536等于□ int (char 65536)就输出0?char 65536超过了char的范围啊,(int)(char 65536)强制转换为什么不等于65536,而是等于0?这是为什么
    2021-06-11 17:37:35
好帮手慕小脸 2021-06-11 10:50:14

同学你好,老师另一个问答中回复了你,记得前去查看:

https://class.imooc.com/course/qadetail/292482

祝学习愉快~

  • 提问者 做条咸鱼才最好 #1
    和我另外一个不一样啊,这个为什么n≠65536呢?而是=0
    2021-06-11 11:30:19
  • 同学你好,很抱歉呐~如下为同学重新解答:

    1、n输出0,是对应ascii码表进行输出的,这里同学记住即可

    2、char c=(char)65536; 由于65536超过了char类型的表示范围,所以需要进行强制转换,转换的过程计算机会经过一系列运算,得到一个在char类型表示范围内的整数,那么c的输出结果就是这个转换后的整数对应的字符,即同学上述图中的方框

    注:有的电脑得到的结果是空,因为这个和字符编码以及操作系统都有关系

    祝学习愉快~

    2021-06-11 11:44:09
  • Java不是用unicode编码的吗,为什么会对应acsii输出?ascii和unicode有重叠还是?
    2021-06-11 15:12:25
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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