三元运算符和C语言中的返回
为什么我们不能在C中的三元运算符中使用return关键字,如下所示:sum> 0? 返回1:返回0;
return
是一个声明。 语句不能以这种方式在表达式中使用。
因为三元运算是表达式而您不能在表达式中使用语句。
您可以在返回时轻松使用三元运算符。
return sum > 0 ? 1 : 0;
或者DrDipShit指出:
return sum > 0;
三元运算符处理表达式,但return
是一个语句。
return
语句的语法是
return
expr ;
三元条件运算符的语法是
expr1 ?
expr2 :
expr3
因此,您可以在return
语句中插入三元运算符的调用作为expr 。 但是你不能将return
语句作为三元运算符的expr2或expr3插入。
三元表达式很像if
语句,但它不是if
语句的确切替换。 如果你想写
if(sum > 0) return 1; else return 0;
你可以把它写成一个真正的if
语句,但你不能将其转换为使用? :
? :
正如我们在这里看到的那样,没有重新排列它。
因为return
是一个语句,而不是表达式。 你不能做int a = return 1;
无论是。
请参阅三元运算符的语法
expr1 ? expr2: expr3;
其中expr1
, expr2
, expr3
是表达式;
运算符?:
如下工作如果expr1
为真,则首先计算expr1
否则计算expr2
,否则计算expr3
。
因此在表达式中, return语句不能用于C语言。
return
语句用于从function
返回,不能在内部使用三元运算符。
(1==1)? return 1 : return 0; /* can't use return inside ternary operator */
你可以做到这一点
return (1==1) ? 1 : 0;
三元运算符的语法如下
expr1 ? expr2 : expr3;
其中expr1
, expr2
, expr3
是表达式, return
是语句,而不是表达式。
只需查看语法,您就应该知道语句不能在表达式中使用。 您可以通过以下方式获得您想要的: return sum > 0 ? 1 : 0;
return sum > 0 ? 1 : 0;