int qempty()
{
return (f == r ? 1 : 0);
}
У наведеному фрагменті що означає " ? " Чим ми можемо його замінити?
int qempty()
{
return (f == r ? 1 : 0);
}
У наведеному фрагменті що означає " ? " Чим ми можемо його замінити?
Відповіді:
Це зазвичай називають умовним оператором , і коли воно використовується таким чином:
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;
}
}
Примітка: Деякі люди називають ?:
його " потрійним оператором ", оскільки це єдиний потрійний оператор (тобто оператор, який бере три аргументи) у мові, якою вони користуються.
a? b : c
синтаксичний цукор для [&]() -> Type { if (a) return b; else return c; }()
.
Це потрійний оператор, в основному це вбудований оператор 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;
x = 1+1 ? : 0
; правильно повертається 2
, у моєму компіляторі, і це ні на що не скаржилося.
Його називають умовним оператором .
Ви можете замінити його на:
int qempty(){
if (f == r) return 1;
else return 0;
}