黑马程序员技术交流社区

标题: char型可以直接赋值给int型的问题 [打印本页]

作者: popoluno    时间: 2013-6-16 14:42
标题: char型可以直接赋值给int型的问题
char型可以直接赋值给int型,比如
char  c='a';
int number=c;
求这个过程的详解,如何赋值的,为什么不报错
作者: 刘利民    时间: 2013-6-16 14:56
在ASCII表中,字符'a'就相当于97,当执行int number = c.时已经类型转换了。即此时,number = 97
作者: 陈壹    时间: 2013-6-16 15:51
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
作者: 高腾    时间: 2013-6-16 18:29
字符类型是以ascii码存储的,ascii码存储的都是int类型的值
而int类型的取值范围比char字符类型的范围大
所以char类型到int类型存在一个隐式转换
这里的number相当于字符'a'在ascii码中所对应的int类型的值 即为97
作者: 蔡志涛    时间: 2013-6-16 21:51
在ASCII表中,字符'a'就相当于97,可以验证:字符'b'相当于98。所以你的程序里number为97;
作者: 逆_水_寒    时间: 2013-6-16 22:06
            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)是强制的。

作者: aa26963    时间: 2013-6-17 07:36
'a'的ASCII是97,所以number就是int型的97,隐式转换的
作者: 关关雎鸠    时间: 2013-6-17 09:36
其实char存的是10进制的asscii的数字,虽然看起来是字母,其实也是数字型。char就相当于是int的子集,所以赋值不报错。




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