int qempty()
{
return (f == r ? 1 : 0);
}
在上面的代码片段中,“?”代表什么?我们可以用什么替换它?int qempty()
{
return (f == r ? 1 : 0);
}
在上面的代码片段中,“?”代表什么?我们可以用什么替换它?a? b : c
视为[&]()->Type {if (a) return b; else return c;}()
的语法糖。 - celtschk这是一个三元运算符,它基本上是一个内联if语句。
x ? y : z
工作原理类似于
if(x) y else z
除了语句之外,你有表达式;所以你可以在更复杂的语句中间使用它。
它对于编写简洁的代码很有用,但过度使用可能会创建难以维护的代码。
注意,如果您看到以下内容:
a = x ? : y;
这是GNU对标准的扩展(详见https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals)。
它与以下语句相同:
a = x ? x : y;
int x = 1+1 ? : 0;
这样的表达式在我的编译器中正确返回了2
,并且没有报错。 - Vinícius A. Jorgeint qempty(){ return(f==r);}
这与其他答案中所说的相同。
这是条件运算符。
a ? 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;
}
这可能不是最干净的方法,但希望能帮助您理解。
它的内容为:
If f == r then return 1 else return 0