说说char型为什么可以存汉字?

kinghai888 2009-08-12 07:51:44
面试遇的问题,想了好久,不知道怎么回答~
...全文
2108 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
musicoder 2011-09-09
  • 打赏
  • 举报
回复
在C\C++中,如果定义了UNICODE宏,char是两个字节,可以存一个汉字。如果没有定义,char是一个字节,字符串中使用两个char存储一个汉字。定义了UNICODE宏后,一个char可以存两个字母,但需要自己进行位操作。
maliang18 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fomalhaut2006 的回复:]

Char是16位,一个汉字2个字节(byte)也是16位(bit)
[/Quote]

学习了
trypsin 2011-03-06
  • 打赏
  • 举报
回复
char类型的单个字符对于汉字还是不可以存储

int _tmain(int argc, _TCHAR* argv[])
{

char chTest = '你';
printf("%c \n",chTest);
printf("chTest 长度为:%d\n", sizeof(chTest));

return 0;
}


输出结果是


chTest 的长度是:1
trypsin 2011-03-06
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 kinghai888 的回复:]

引用 4 楼 hikaliv 的回复:
……
char 型只不过存的是字符集的遇射码而已……就是一堆一定范围内的整型数……传统GB2312码,是两个 char 元素表示一个汉字,第一个 char 值为负值,这就告诉系统,这是一个非ASCII字符,需要再读取其后面的一个,就是两个成一对儿,然后找汉字或者其它非ASCII字符集去映射出是什么字……


2个char 元素表示一个汉字,那一个……
[/Quote]

那就是在vc上char被强制扩充成16位了?实在困扰
anttu 2009-08-16
  • 打赏
  • 举报
回复
楼主面试的啥公司,你掂量下,简单点就用教科书的解释回答,要是搞研究的,估计4楼的仁兄回答才是
rwg202315 2009-08-13
  • 打赏
  • 举报
回复
uicode 是16进制的 所以只能让 8位的字符住在16位里了
rwg202315 2009-08-13
  • 打赏
  • 举报
回复
char采用的是 Unicode编码 Unicode编码中 字符是占16位的 应该是给强行变大了(把8位前补0)
实际上一个字符实际大小是8位
「已注销」 2009-08-12
  • 打赏
  • 举报
回复

package com.wm.mad.tmp;

import junit.framework.TestCase;

public class CharEx extends TestCase {
public void test() {
char ch = ' ';
for(int i=0; i < 65535; i++) {
ch = (char) i;
System.out.print(ch);
System.out.print(' ');
if((i + 1) % 10 == 0) {
System.out.println();
}
}
assert(true);
}
}

自己运行一下,打印出来看看char能存什么

result:(部分)
? ? ? ? ? ? ? ? 一 丁
丂 七 丄 丅 丆 万 丈 三 上 下
丌 不 与 丏 丐 丑 丒 专 且 丕
世 丗 丘 丙 业 丛 东 丝 丞 丟
丠 両 丢 丣 两 严 並 丧 丨 丩
个 丫 丬 中 丮 丯 丰 丱 串 丳
临 丵 丶 丷 丸 丹 为 主 丼 丽
举 丿 乀 乁 乂 乃 乄 久 乆 乇
么 义 乊 之 乌 乍 乎 乏 乐 乑
乒 乓 乔 乕 乖 乗 乘 乙 乚 乛
乜 九 乞 也 习 乡 乢 乣 乤 乥
书 乧 乨 乩 乪 乫 乬 乭 乮 乯
买 乱 乲 乳 乴 乵 乶 乷 乸 乹
乺 乻 乼 乽 乾 乿 亀 亁 亂 亃
亄 亅 了 亇 予 争 亊 事 二 亍
于 亏 亐 云 互 亓 五 井 亖 亗
亘 亙 亚 些 亜 亝 亞 亟 亠 亡
亢 亣 交 亥 亦 产 亨 亩 亪 享
京 亭 亮 亯 亰 亱 亲 亳 亴 亵
亶 亷 亸 亹 人 亻 亼 亽 亾 亿
什 仁 仂 仃 仄 仅 仆 仇 仈 仉
今 介 仌 仍 从 仏 仐 仑 仒 仓
仔 仕 他 仗 付 仙 仚 仛 仜 仝
仞 仟 仠 仡 仢 代 令 以 仦 仧
仨 仩 仪 仫 们 仭 仮 仯 仰 仱
仲 仳 仴 仵 件 价 仸 仹 仺 任
仼 份 仾 仿 伀 企 伂 伃 伄 伅
伆 伇 伈 伉 伊 伋 伌 伍 伎 伏
伐 休 伒 伓 伔 伕 伖 众 优 伙
会 伛 伜 伝 伞 伟 传 伡 伢 伣
伤 伥 伦 伧 伨 伩 伪 伫 伬 伭
伮 伯 估 伱 伲 伳 伴 伵 伶 伷
伸 伹 伺 伻 似 伽 伾 伿 佀 佁
佂 佃 佄 佅 但 佇 佈 佉 佊 佋
佌 位 低 住 佐 佑 佒 体 佔 何
佖 佗 佘 余 佚 佛 作 佝 佞 佟
你 佡 佢 佣 佤 佥 佦 佧 佨 佩
佪 佫 佬 佭 佮 佯 佰 佱 佲 佳
佴 併 佶 佷 佸 佹 佺 佻 佼 佽
佾 使 侀 侁 侂 侃 侄 侅 來 侇
侈 侉 侊 例 侌 侍 侎 侏 侐 侑
侒 侓 侔 侕 侖 侗 侘 侙 侚 供
侜 依 侞 侟 侠 価 侢 侣 侤 侥
侦 侧 侨 侩 侪 侫 侬 侭 侮 侯
侰 侱 侲 侳 侴 侵 侶 侷 侸 侹
侺 侻 侼 侽 侾 便 俀 俁 係 促
俄 俅 俆 俇 俈 俉 俊 俋 俌 俍
俎 俏 俐 俑 俒 俓 俔 俕 俖 俗
俘 俙 俚 俛 俜 保 俞 俟 俠 信
俢 俣 俤 俥 俦 俧 俨 俩 俪 俫
俬 俭 修 俯 俰 俱 俲 俳 俴 俵
俶 俷 俸 俹 俺 俻 俼 俽 俾 俿
倀 倁 倂 倃 倄 倅 倆 倇 倈 倉
倊 個 倌 倍 倎 倏 倐 們 倒 倓
倔 倕 倖 倗 倘 候 倚 倛 倜 倝
倞 借 倠 倡 倢 倣 値 倥 倦 倧
jicheng687 2009-08-12
  • 打赏
  • 举报
回复
char 是两字节,所以可以存汉字

"汉".toString().getBytes().length == 2
「已注销」 2009-08-12
  • 打赏
  • 举报
回复

package com.wm.mad.tmp;

import junit.framework.TestCase;

public class CharEx extends TestCase {
public void test() {
char ch = ' ';
for(int i=0; i < 65535; i++) {
ch = (char) i;
System.out.print(ch);
System.out.print(' ');
if((i + 1) % 10 == 0) {
System.out.println();
}
}
assert(true);
}
}

自己运行一下,打印出来看看char能存什么

result:(部分)
? ? ? ? ? ? ? ? 一 丁
丂 七 丄 丅 丆 万 丈 三 上 下
丌 不 与 丏 丐 丑 丒 专 且 丕
世 丗 丘 丙 业 丛 东 丝 丞 丟
丠 両 丢 丣 两 严 並 丧 丨 丩
个 丫 丬 中 丮 丯 丰 丱 串 丳
临 丵 丶 丷 丸 丹 为 主 丼 丽
举 丿 乀 乁 乂 乃 乄 久 乆 乇
么 义 乊 之 乌 乍 乎 乏 乐 乑
乒 乓 乔 乕 乖 乗 乘 乙 乚 乛
乜 九 乞 也 习 乡 乢 乣 乤 乥
书 乧 乨 乩 乪 乫 乬 乭 乮 乯
买 乱 乲 乳 乴 乵 乶 乷 乸 乹
乺 乻 乼 乽 乾 乿 亀 亁 亂 亃
亄 亅 了 亇 予 争 亊 事 二 亍
于 亏 亐 云 互 亓 五 井 亖 亗
亘 亙 亚 些 亜 亝 亞 亟 亠 亡
亢 亣 交 亥 亦 产 亨 亩 亪 享
京 亭 亮 亯 亰 亱 亲 亳 亴 亵
亶 亷 亸 亹 人 亻 亼 亽 亾 亿
什 仁 仂 仃 仄 仅 仆 仇 仈 仉
今 介 仌 仍 从 仏 仐 仑 仒 仓
仔 仕 他 仗 付 仙 仚 仛 仜 仝
仞 仟 仠 仡 仢 代 令 以 仦 仧
仨 仩 仪 仫 们 仭 仮 仯 仰 仱
仲 仳 仴 仵 件 价 仸 仹 仺 任
仼 份 仾 仿 伀 企 伂 伃 伄 伅
伆 伇 伈 伉 伊 伋 伌 伍 伎 伏
伐 休 伒 伓 伔 伕 伖 众 优 伙
会 伛 伜 伝 伞 伟 传 伡 伢 伣
伤 伥 伦 伧 伨 伩 伪 伫 伬 伭
伮 伯 估 伱 伲 伳 伴 伵 伶 伷
伸 伹 伺 伻 似 伽 伾 伿 佀 佁
佂 佃 佄 佅 但 佇 佈 佉 佊 佋
佌 位 低 住 佐 佑 佒 体 佔 何
佖 佗 佘 余 佚 佛 作 佝 佞 佟
你 佡 佢 佣 佤 佥 佦 佧 佨 佩
佪 佫 佬 佭 佮 佯 佰 佱 佲 佳
佴 併 佶 佷 佸 佹 佺 佻 佼 佽
佾 使 侀 侁 侂 侃 侄 侅 來 侇
侈 侉 侊 例 侌 侍 侎 侏 侐 侑
侒 侓 侔 侕 侖 侗 侘 侙 侚 供
侜 依 侞 侟 侠 価 侢 侣 侤 侥
侦 侧 侨 侩 侪 侫 侬 侭 侮 侯
侰 侱 侲 侳 侴 侵 侶 侷 侸 侹
侺 侻 侼 侽 侾 便 俀 俁 係 促
俄 俅 俆 俇 俈 俉 俊 俋 俌 俍
俎 俏 俐 俑 俒 俓 俔 俕 俖 俗
俘 俙 俚 俛 俜 保 俞 俟 俠 信
俢 俣 俤 俥 俦 俧 俨 俩 俪 俫
俬 俭 修 俯 俰 俱 俲 俳 俴 俵
俶 俷 俸 俹 俺 俻 俼 俽 俾 俿
倀 倁 倂 倃 倄 倅 倆 倇 倈 倉
倊 個 倌 倍 倎 倏 倐 們 倒 倓
倔 倕 倖 倗 倘 候 倚 倛 倜 倝
倞 借 倠 倡 倢 倣 値 倥 倦 倧
superheizai 2009-08-12
  • 打赏
  • 举报
回复
学习了
qiubojuncode 2009-08-12
  • 打赏
  • 举报
回复
java采用unicode字符集,char16位,所以能存放下汉字
defhwfhwqepwqi 2009-08-12
  • 打赏
  • 举报
回复
不懂
knightzhuwei 2009-08-12
  • 打赏
  • 举报
回复
连图形符号都能存 不要说汉字了
  • 打赏
  • 举报
回复
因为char 在java里面是unicode,2个字节

在c/c++和delphi里面 不是 unicode,只有一个字节
djyzhang123 2009-08-12
  • 打赏
  • 举报
回复
地方又够大,又有编码相映射,不就可以存可以取了吗。。。。。
南南北北 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fomalhaut2006 的回复:]
Char是16位,一个汉字2个字节(byte)也是16位(bit)
[/Quote]

地方够大,就能存,有啥可说的.
lmg671 2009-08-12
  • 打赏
  • 举报
回复
char 是两字节,所以能存。
lianyangshiyan 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fomalhaut2006 的回复:]
Char是16位,一个汉字2个字节(byte)也是16位(bit)
[/Quote]
楼上正解
爪哇鹅 2009-08-12
  • 打赏
  • 举报
回复
Char是16位,一个汉字2个字节(byte)也是16位(bit)
加载更多回复(24)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧