黑马程序员技术交流社区

标题: 求解答,为什么不出 c 3 [打印本页]

作者: 晨间星光    时间: 2015-4-4 21:05
标题: 求解答,为什么不出 c 3
class Demo
{
        public static void main(String[] args)
        {
                int num=60;
                int n1=num&15;
                System.out.println(n1>9?(char)(n1-10+'A'):n1);//打印结果是67,为什么不是c
                int temp=60>>>4;
                int n2=temp&15;
                System.out.println(n2>9?(char)(n2-10+'A'):n2);
        }

}
作者: 呐拽    时间: 2015-4-4 22:34
n1-10+'A'
因为前面的都是int类型的 ‘A’是 char类型的
char 类型在参与运算的时候回自动提升为 int类型 字符A在ASCII中对应的65
所以结果才是67,而67转换为char类型的时候还是转换为char类型的67
作者: IOS小哥    时间: 2015-4-4 22:47
强制类型转换出问题了、
作者: showdy    时间: 2015-4-4 22:50
三元运算符中,你得注意数据类型自动提升这问题。
作者: 晨间星光    时间: 2015-4-4 23:11
呐拽 发表于 2015-4-4 22:34
n1-10+'A'
因为前面的都是int类型的 ‘A’是 char类型的
char 类型在参与运算的时候回自动提升为 int类型  ...

怎么转换成c呢
作者: liyanghml    时间: 2015-4-6 01:45
本帖最后由 liyanghml 于 2015-4-6 01:47 编辑
  1. System.out.println(n1>9?(char)(n1-10+'A'):(char)</font>n1)
  2.                 int temp=60>>>4;
  3.                 int n2=temp&15;
  4.                 System.out.println(n2>9?(char)(n2-10+'A'):(char)</font>n2);
复制代码
前边转换了,后边要同时转换,才是你想要的结果吧
作者: z小怪兽    时间: 2015-4-6 07:26
强转出问题了




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