返回"?:"运算符

min*_*234 2 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;
                };
                };
Run Code Online (Sandbox Code Playgroud)

我的意思是,我想我可以使用一个if条件d!=0,但我必须只使用?:,并g++给我:expected primary-expression before 'return'

nhg*_*rif 5

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

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

   | T | F
---+---+---
 T | T | F
---+---+---
 F | F | F
Run Code Online (Sandbox Code Playgroud)

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

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

return d != 0 && n < d;
Run Code Online (Sandbox Code Playgroud)

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

return d && n<d;
Run Code Online (Sandbox Code Playgroud)

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