什么“? 在C ++中做?

int qempty() { return (f == r ? 1 : 0); } 

在上面的片段中,“ ”是什么意思? 我们可以用什么replace它?

这通常被称为条件运算符 ,当使用像这样:

 condition ? result_if_true : result_if_false 

…如果condition评估为true ,则expression式评估为result_if_true ,否则评估为result_if_false

它是语法糖 ,在这种情况下,它可以被replace

 int qempty() { if(f == r) { return 1; } else { return 0; } } 

注意:有些人把?:称为“ 三元运算符 ”,因为它是唯一使用它们的语言的三元运算符(即运算符有三个参数)。

这是一个三元运算符,它基本上是一个内联if语句

 x ? y : z 

作品像

 if(x) y else z 

除了你有expression式的陈述, 所以你可以在更复杂的语句中使用它。

这对于编写简洁的代码很有用,但可以被过度使用来创build难以维护的代码。

它被称为条件运算符 。

您可以将其replace为:

 int qempty(){ if (f == r) return 1; else return 0; } 

您可以将其重写为:

 int qempty(){ return(f==r);} 

与其他答案中所说的一样。

这是条件操作符。

一个 ? b:c

这是IF / THEN / ELSE的捷径。

意思是:如果a是真的,则返回b,否则返回c。 在这种情况下,如果f == r,则返回1,否则返回0。

问号是条件运算符。 代码意味着如果f == r则返回1,否则返回0.代码可以被重写为

 int qempty() { if(f==r) return 1; else return 0; } 

这可能不是最干净的方式,但希望能帮助你理解。

只是一个说明,如果你看到这个:

 a = x ? : y; 

这是标准的GNU扩展(请参阅https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals )。

这是一样的

 a = x ? x : y;