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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zfgrinm 中级黑马   /  2015-2-11 18:48  /  1236 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class OperateDemo33 {

        public static void main(String[] args) {
                // TODO 自动生成的方法存根

                int m = 1,n;
                n = (m>1)?100:'a';//
1                System.out.println(n);//97
2                System.out.println((m>1)?100:'a');//a
               
               
                int a = 1,b,c=2;
3                System.out.println((a>1)?100:'a');//a
4                System.out.println((c>1)?100:'a');//d
5                System.out.println((a>1)?100:(int)'a');//97
6                System.out.println((a>1)?(int)100:'a');//a
7                System.out.println((a>1)?100:(char)('a'+1));//b
8                System.out.println((c>1)?100:(char)('a'+1));//d
9                System.out.println((a>1)?(char)100:('a'+1));//b
10                System.out.println((c>1)?(char)100:('a'+1));//d
11                System.out.println((a>1)?100:(int)('a'+1));//98
12                System.out.println((c>1)?100:(int)('a'+1));//100
13                System.out.println((a>1)?100:('a'+1));//98
14                System.out.println((c>1)?100:('a'+1));//100
               
        }


}
三元运算符不是自动提升类型的么,那么第3,4行结果怎还是char类型,不是应该为int型?
且由7-10行输出结果可以断定:三元运算符只要强转了一个表达式结果,那么另一个表达式也被强转了?,如果是那么第6行输出又怎么解释。
三元运算符的结果只能是一种数据类型?
求指教转换规则,自己实验了多种组合,完全把自己被转懵了。。。

8 个回复

倒序浏览
有木有搞错啊,:   (  都不能用了......
回复 使用道具 举报
之前学习的时候还没注意到这个问题
回复 使用道具 举报
怎么还有表情?
回复 使用道具 举报
浮夸 发表于 2015-2-12 09:15
怎么还有表情?

那个是冒号和左括号,不知道怎么自己变成表情
回复 使用道具 举报
假设一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量表达式的值是可以用类型T表示的(也就是说,常量表达式的值是在类型T的取值范围之内),那么整个条件运算符结果的类型就是T。
回复 使用道具 举报 1 0
~我思故我在~ 发表于 2015-2-12 15:32
假设一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量 ...

谢了啊,真是这么回事啊!
回复 使用道具 举报
zfgrinm 发表于 2015-2-12 18:11
谢了啊,真是这么回事啊!

大家一起加油,我也在申请报名流程中
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马