黑马程序员技术交流社区

标题: 三元运算符强转问题(新手求指导) [打印本页]

作者: zfgrinm    时间: 2015-2-11 18:48
标题: 三元运算符强转问题(新手求指导)
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行输出又怎么解释。
三元运算符的结果只能是一种数据类型?
求指教转换规则,自己实验了多种组合,完全把自己被转懵了。。。


作者: zfgrinm    时间: 2015-2-11 18:50
有木有搞错啊,:   (  都不能用了......
作者: ~我思故我在~    时间: 2015-2-11 21:01
之前学习的时候还没注意到这个问题
作者: 浮夸    时间: 2015-2-12 09:15
怎么还有表情?
作者: zfgrinm    时间: 2015-2-12 15:19
浮夸 发表于 2015-2-12 09:15
怎么还有表情?

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

谢了啊,真是这么回事啊!
作者: ~我思故我在~    时间: 2015-2-13 09:18
zfgrinm 发表于 2015-2-12 18:11
谢了啊,真是这么回事啊!

大家一起加油,我也在申请报名流程中
作者: alvis2015    时间: 2015-3-2 12:49
学习了。。。




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