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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晨间星光 中级黑马   /  2015-4-4 21:05  /  651 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
        }

}

评分

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

查看全部评分

6 个回复

正序浏览
强转出问题了
回复 使用道具 举报
本帖最后由 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);
复制代码
前边转换了,后边要同时转换,才是你想要的结果吧
回复 使用道具 举报
呐拽 发表于 2015-4-4 22:34
n1-10+'A'
因为前面的都是int类型的 ‘A’是 char类型的
char 类型在参与运算的时候回自动提升为 int类型  ...

怎么转换成c呢
回复 使用道具 举报
三元运算符中,你得注意数据类型自动提升这问题。
回复 使用道具 举报
强制类型转换出问题了、
回复 使用道具 举报
n1-10+'A'
因为前面的都是int类型的 ‘A’是 char类型的
char 类型在参与运算的时候回自动提升为 int类型 字符A在ASCII中对应的65
所以结果才是67,而67转换为char类型的时候还是转换为char类型的67

评分

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

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马