为什么它显示错误:“返回”之前的预期表达式?

0 c c++ embedded

#include<stdio.h>
int main(void)
{
int x=1,y=0;
x>y?printf("Hello World"):return x;
}
Run Code Online (Sandbox Code Playgroud)

为什么它显示错误:“返回”之前的预期表达式?这里需要改变什么?

Joh*_*ger 6

为什么它显示错误:“返回”之前的预期表达式?

三元运算符是operator,需要三个操作数。第一个操作数必须是整数类型的表达式。后两个操作数必须是类型相互兼容的表达式。

一个return语句指定在它出现的函数返回值,并且使得函数终止。它不是表达式,也不会计算为值,也不是指定的返回值或任何其他值。因此,它不能是三元运算符的操作数

因此,错误消息表示缺少三元运算符的第三个操作数,事实如此,因为该return语句不能被视为操作数。如果存在,该操作数将出现在return.

这里需要改变什么?

要获得您想要的逻辑,需要更改的是三元运算符。改用if/else语句:

if (x > y) {
    printf("Hello World");
} else {
    return x;
}
Run Code Online (Sandbox Code Playgroud)

一般来说,应该避免使用三元运算符。它通常会使代码更难阅读和理解,几乎没有或没有抵消好处。有一天你可能会发现一个编程上下文,其中三元是最干净、最清晰的方法,但在其他任何地方,使用if.