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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FlyFish 中级黑马   /  2014-10-14 10:52  /  2053 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

三元运算符的使用范围?看老毕的视频讲述三元运算符时,有一个表达式是n1>9?(char)(n1-10+'a'):n1;这个值为什么不能强转?

4 个回复

倒序浏览
二元运算符要求后两个返回表达式的返回类型是一致的,其他没有什么限制,
从你写出来的代码来看,明显是返回类型不一致,所以是不行的,

你要不第一个个返回类型不用强转,这样两个表达式都返回int,
要不最后一个返回表达式也强转,这样两个都返回char类型.

这个要记到笔记本里面哦,亲
回复 使用道具 举报
本帖最后由 cs8630323 于 2014-10-14 12:00 编辑

int n1=33;
char w=n1>9?(char)(n1-10+'a'):n1;//出错,说明结果输出会转成int
最后我改成(char)(n1>9?(n1-10+'a'):n1)
为什么会这样,貌似这个有点复杂,java编程规范  有,我也要去翻翻看下
回复 使用道具 举报
毕老师视频里面有关于这个使用范围的讲解。
回复 使用道具 举报
三元运算符是3个数参与运算,看楼主的题,第二个数和第三个数运算时会发生自动类型提升
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马