公告
财富商城
积分规则
提问
发文
2019-01-01 05:52发布
无与为乐者.
int qempty() { return (f == r ? 1 : 0); }
In the above snippet, what does "?" mean? What can we replace it with?
It is called the conditional operator.
You can replace it with:
int qempty(){ if (f == r) return 1; else return 0; }
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.
condition
true
result_if_true
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.
?:
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.
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#Conditionals).
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.
You can just rewrite it as:
int qempty(){ return(f==r);}
Which does the same thing as said in the other answers.
最多设置5个标签!
It is called the conditional operator.
You can replace it with:
This is commonly referred to as the conditional operator, and when used like this:
... if the
condition
evaluates totrue
, the expression evaluates toresult_if_true
, otherwise it evaluates toresult_if_false
.It is syntactic sugar, and in this case, it can be replaced with
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.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
which is probably not the cleanest way to do it, but hopefully helps your understanding.
Just a note, if you ever see this:
It's a GNU extension to the standard (see https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals).
It is the same as
This is a ternary operator, it's basically an inline if statement
works like
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.
You can just rewrite it as:
Which does the same thing as said in the other answers.