黑马程序员技术交流社区

标题: 看到个关于char的面试题 [打印本页]

作者: 赵浩霖    时间: 2016-3-25 21:41
标题: 看到个关于char的面试题
char型变量中能不能存贮一个中文汉字?为什么? 一个字符占几个字节?
我记得C语言里好像是放不下去的,为什么我试了下能出来?
还有个是:
char = 12;编译的时候没有问题,可是什么也没有输出?这是为什么?
作者: 潘耿威    时间: 2016-3-25 22:18
有可能是软件问题导致没输出,只不过输出的值不是12,可能是个符号,应为在计算机内,用的是2进制。输入输出可以用 10进制,16进制,8进制。当输出格式用 %c 时,它们都可以输出为字符,当输入格式用 单个字符输出 时,它们都可以把输入的字符转为 整型ascii码值。
作者: huhemingtiancai    时间: 2016-3-25 22:25
你电脑是不是有问题?
作者: 唯爱唐嫣    时间: 2016-3-25 22:30
JAVA中char类型可以存放汉字,但所占的字节数不确定。笔画简单的占一到两个字节复杂的汉字占的多点
作者: feng9639    时间: 2016-3-25 22:35
char = 12; 这个是错的   "char" 是关键字 "char" 可容纳单个字符的一种基本数据类型  应该写成 char a=12;  这样就有输出了    是个符号.

java采用unicode,2个字节(16位)来表示一个字符, 无论是汉字还是数字字母,或其他语言。
char 在java中是2个字节。
所以可以存储中文
作者: 赵浩霖    时间: 2016-3-25 22:54
feng9639 发表于 2016-3-25 22:35
char = 12; 这个是错的   "char" 是关键字 "char" 可容纳单个字符的一种基本数据类型  应该写成 char a=12; ...

unicode是什么?跟ascll有什么区别?
作者: zhang3216858    时间: 2016-3-25 23:57
char是可以储存一个汉字字符的 例如'中'   char的范围是0-65535吧应该,用的是unicode编码
作者: aomingchao    时间: 2016-3-26 00:04
char只占一个字节 而存储一个汉字需要两个字节
作者: xiaofushen    时间: 2016-3-26 01:09
本帖最后由 xiaofushen 于 2016-3-26 01:13 编辑
赵浩霖 发表于 2016-3-25 22:54
unicode是什么?跟ascll有什么区别?

这个问题简单说一下吧.楼主要深究可以去网上查资料.我帮楼主找了一个,可以大致回答一下楼主:
UNICODE 是目前用来解决 ASCII 码 256 个字符限制问题的一种比较流行的解决方案.大家知道,ASCII 字符集只有256个字符,用 0-255 之间的数字来表示.包括大小写字母、数字以及少数特殊字符;如标点符号、货币符号等.对于大多数拉丁语言来说,这些字符已经够用.但是,许多亚洲和东方语言所用的字符远远不止256个字符.有些超过千个.人们为了突破 ASCII 码字符数的限制,试图用一种简单的方法来针对超过256个字符的语言编写计算机程序.于是 UNICODE 应运而生.UNICODE是在更大范围内将数字代码映射到多种语言的字符集.
对于一开始楼主的问题,5楼正解.

作者: zhoubinjian    时间: 2016-3-26 01:23
汉字是两个字节,char也是两个字节 ,是可以放的。char=12,这个时候 输出的是在电脑里12对应的符号,如果没有对应的,输出是空的,有的话就会显示
作者: feng9639    时间: 2016-3-26 10:32
赵浩霖 发表于 2016-3-25 22:54
unicode是什么?跟ascll有什么区别?

ASCII 是用来表示英文字符的一种编码规范。每个ASCII字符占用1 个字节

   Unicode与ASCII一样也是一种字符编码方法,它占用两个字节(0000H—FFFFH),容纳65536 个字符,这完全可以容纳全世界所有语言文字的编码。在Unicode 里,所有的字符都按一个字符来处理, 它们都有一个唯一的Unicode 码。
Unicode 能够使计算机实现跨语言、跨平台的文本转换及处理


作者: 赵浩霖    时间: 2016-3-26 21:15
aomingchao 发表于 2016-3-26 00:04
char只占一个字节 而存储一个汉字需要两个字节

C里char是1个字节,Java里是2个
作者: 赵浩霖    时间: 2016-3-26 21:17
xiaofushen 发表于 2016-3-26 01:09
这个问题简单说一下吧.楼主要深究可以去网上查资料.我帮楼主找了一个,可以大致回答一下楼主:
UNICODE 是目 ...

我也去查查看看
作者: 赵浩霖    时间: 2016-3-26 21:19
feng9639 发表于 2016-3-26 10:32
ASCII 是用来表示英文字符的一种编码规范。每个ASCII字符占用1 个字节

   Unicode与ASCII一样也是一种 ...

欧了,虽然有点不太清楚具体是什么,记住就行了
作者: a18302465887    时间: 2016-3-26 21:30
char 类型 执行放 单个字符 单个字节  注意: 是单个字符 单个字节   

一个汉字一个字符  一个字符等于两个字节
作者: baye1992    时间: 2016-3-26 21:31
汉字国标是占2个字节,国际上是占3个字节
作者: aomingchao    时间: 2016-3-28 22:39
赵浩霖 发表于 2016-3-26 21:15
C里char是1个字节,Java里是2个

多谢提醒!!
作者: 樊自超    时间: 2016-3-28 23:23
两个字节




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2