新手,求解

qq_46141195 2020-01-05 09:03:57
画五角星的那行,求大佬翻译一下,谢谢
...全文
38 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2020-01-05
  • 打赏
  • 举报
回复
k = I-j ? I+j : I-3 ? j : I;

根据操作符的优先级 - 的优先级大于 ?: 所以第一步结果是
k = -10 ? I+j : I-3 ? j:I;

?:操作符是少数几个定义了操作数执行顺序的操作符。按照此操作符的定义
首先因为 -10不是0(并不是判断-10是否大于0, 而是直接用-10这个结果)所以就是true
那么 执行?之后:之间的I+j并返回, 所以
最终结果就是k=30; 结束

:后面的另外一个?:表达式根本就没有执行

验证办法, 把表达式改一下
k = I-j ? I+j : ++I ? j : I;
输出I看看, I依然是10,没有变成11
棉猴 2020-01-05
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
看三目运算很简单的,问号前面为判断条件,问号和冒号后面是判断后要执行的,问号当作IF冒号当作ELSE看就可以了,这句是连续的判断;
如果 I-J>0返回 I+J 否则如果 I-3>0返回 J 否则返回 I

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧