A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© popoluno 中级黑马   /  2013-6-16 14:42  /  4560 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

char型可以直接赋值给int型,比如
char  c='a';
int number=c;
求这个过程的详解,如何赋值的,为什么不报错

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

8 个回复

倒序浏览
在ASCII表中,字符'a'就相当于97,当执行int number = c.时已经类型转换了。即此时,number = 97

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
char类型的变量是以asc码的形式保存在内存当中的占一个字节 0000,用2进制表示,所以当int跟char进行转换时
int→char:10进制转换成2进制,将转换后的2进制数值的最后四位赋值给char,通过asc码转成相应字符;
char→int:字符通过asc转化成2进制,2进制转成10进制再赋值给int
asc表 http://wenku.baidu.com/view/953d32a20029bd64783e2cea.html

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
字符类型是以ascii码存储的,ascii码存储的都是int类型的值
而int类型的取值范围比char字符类型的范围大
所以char类型到int类型存在一个隐式转换
这里的number相当于字符'a'在ascii码中所对应的int类型的值 即为97

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报 1 0
在ASCII表中,字符'a'就相当于97,可以验证:字符'b'相当于98。所以你的程序里number为97;

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
            char c = 'a';
            int number = c;
            char bb = (char)number;

            Console.WriteLine(number);
            Console .WriteLine (bb);
            Console .ReadKey ();

你把我写的代码复制过去运行一遍,看看输出的是什么,相信你就明白了。
ascii 码表要多看看,“A”是65,“a”是97.
char类型到int类型的转换,int类型到char类型的转换,隐式的,显示的。
加(int)是强制的。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
'a'的ASCII是97,所以number就是int型的97,隐式转换的
回复 使用道具 举报
其实char存的是10进制的asscii的数字,虽然看起来是字母,其实也是数字型。char就相当于是int的子集,所以赋值不报错。
回复 使用道具 举报
y96352 中级黑马 2013-6-17 21:34:34
9#
字符'a'在asc码中是97  所以可以隐性转化成int
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马