今日问题:三目运算符参与编译及输出

起因

今天写洛谷的题,第一道就让我摸不着头脑;网址:P5709 【深基2.习6】Apples Prologue / 苹果和虫子 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

很简单的选择结构的题当判断输出结果是否大于零时我选择使用

cout<<re>0?re:0;

但是这样在洛谷里根本无法通过编译(当然,在dev里可以)

原因

然后我开始搜索原因,这篇CSDN给了我提醒:C++中“ ? : ”三目运算符的坑_此杭非彼航的博客-CSDN博客

ta提到了运算符优先级的问题启发了我。于是我接下来的改变是:

cout<<(re>0)?re:0;

然后还是有一个测试点过不去 。然后我就开始考虑这段代码到底哪里出了问题。

解决

最后,我又给代码加了个括号:

cout<<((re>0)?re:0);

这样就通过了所有测试点,但是究其原因我继续搜索然后看到了这篇CSDN:C++中“cout << ”和“ ? : ”三目运算符的坑_三目运算符输出结果是对错-CSDN博客

<<运算符的优先级高于条件运算符? :,所以如果没有括号的话,只有re>0的真假被输出。

所以要带上括号,使三目运算符?:被优先计算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值