本帖最后由 刘伯阳 于 2012-6-6 19:39 编辑
请注意在这两个表达式中,每一个表达式的第二个和第三个操作数的类型都不相同:x是char类型的,而0和a都是int类型的。
混合类型的计算在三元表达式中会“引起混乱”
1、如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。换句话说,你可以通过绕过混合类型的计算来避免大麻烦。
2、如果一个操作数的类型是byte、short或char类型的,而另一个操作数是一个int类型的常量表达式,它的值是可以用byte、short或char类型表示的,那么条件表达式的类型就是byte、short或char。
3、否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型。
所以第一行: 0被看作是char类型,所以x不必转换,输出a。
第二行:a是int类型,x是char型,x需要被强制转成int,a在ASCII码中对应的是97,输出97。
|