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

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

4

8 回答 8

146

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

condition ? result_if_true : result_if_false

...如果condition计算结果为true,则表达式计算结果为result_if_true,否则计算结果为result_if_false

它是语法糖,在这种情况下,它可以替换为

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

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

于 2009-04-27T21:09:52.857 回答
15

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

x ? y : z

if(x) y else z

除了,你有表达式而不是语句;所以你可以在更复杂的语句中间使用它。

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

于 2009-04-27T21:11:56.547 回答
8

只是一个注释,如果你看到这个:

a = x ? : y;

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

它与

a = x ? x : y;
于 2015-11-22T06:38:37.220 回答
6

您可以将其重写为:

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

这与其他答案中所说的相同。

于 2009-04-27T21:49:37.377 回答
5

它被称为条件运算符

您可以将其替换为:

int qempty(){ 
    if (f == r) return 1;
    else return 0;
}
于 2009-04-27T21:12:03.350 回答
3

它是条件运算符。

一种 ?乙:丙

这是 IF/THEN/ELSE 的快捷方式。

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

于 2009-04-27T21:10:40.887 回答
2

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

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

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

于 2009-04-27T21:14:07.323 回答
2

它读作:

If f == r then return 1 else return 0
于 2022-01-14T05:36:17.630 回答