返回"?:"操作者

时间:2016-03-19 14:41:01

标签: c++ return

所以我必须为我的大学课做一个简单的程序,其中包括一个结构fraction,分子和分母为ints,一个函数is_correct()检查两个条件:是分母!=0并且是提名者<分母。如果其中两个是真的,那么我应该返回true,否则false。我有义务使用?:运营商。所以这是我的代码:

struct fraction {int n,d;
                bool is_correct(){
                    d!=0?(return n<d?true:false):return false;
                };
                };

我的意思是,我想我可以使用条件为if的{​​{1}},但我必须只使用d!=0,而?:会给我:{{1 }}

3 个答案:

答案 0 :(得分:5)

  

如果其中两个是真的,那么我应该返回true,否则为false

这是一张非常标准的真值表,对吗?

   | T | F
---+---+---
 T | T | F
---+---+---
 F | F | F

我知道一个具有相同真值表的运算符:&&

我们根本不需要三元组。我们可以简单地写一下:

return d != 0 && n < d;

更简洁的解决方案如下所示:

return d && n<d;

但我会说第一个解决方案更明确地表达了编码人员的意图,这是一个重要的考虑因素。

答案 1 :(得分:3)

只需将return移到条件之外(为了清晰起见,添加间距):

return d != 0 ? (n < d ? true : false) : false;

答案 2 :(得分:1)

struct fraction {
  int n,d;

  bool is_correct() {
    return d != 0 ? (n < d ? true : false) : false;
  };
};