What does the question mark character ('?') mean in C++?
int qempty()
{
return (f == r ? 1 : 0);
}
In the above snippet, what does "?" mean? What can we replace it with?
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

评论(8)

The question mark is the conditional operator. The code means that if f==r then 1 is returned, otherwise, return 0. The code could be rewritten as
int qempty()
{
if(f==r)
return 1;
else
return 0;
}
which is probably not the cleanest way to do it, but hopefully helps your understanding.


It is called the conditional operator.
You can replace it with:
int qempty(){
if (f == r) return 1;
else return 0;
}


Just a note, if you ever see this:
a = x ? : y;
It's a GNU extension to the standard (see https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html).
It is the same as
a = x ? x : y;

This is a ternary operator, it's basically an inline if statement
x ? y : z
works like
if(x) y else z
except, instead of statements you have expressions; so you can use it in the middle of a more complex statement.
It's useful for writing succinct code, but can be overused to create hard to maintain code.

This is commonly referred to as the conditional operator, and when used like this:
condition ? result_if_true : result_if_false
... if the condition
evaluates to true
, the expression evaluates to result_if_true
, otherwise it evaluates to result_if_false
.
It is syntactic sugar, and in this case, it can be replaced with
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
Note: Some people refer to ?:
it as "the ternary operator", because it is the only ternary operator (i.e. operator that takes three arguments) in the language they are using.
发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。