【问题标题】:Why it shows error: expected expression before ‘return’?为什么它显示错误:“返回”之前的预期表达式?
【发布时间】:2020-09-18 16:55:59
【问题描述】:
#include<stdio.h>
int main(void)
{
int x=1,y=0;
x>y?printf("Hello World"):return x;
}

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

【问题讨论】:

  • 请问写这篇文章的目的是什么,而不是if?
  • 这是对三进制 (? :) 的不当使用。三元组期望表达式:本身评估为值的事物。 return 不会评估任何东西;这是一个控制语句。如果您想有条件地做某事(而不是有条件地选择一个值),请使用完整的if。即使您尝试做的事情有效,它也将是糟糕的形式。
  • 我很确定这是不正确的,我没有看到任何 here 说你可以从三元的分支之一返回。
  • 帮自己一个忙,避免使用三元运算符。现代编译器擅长优化if-else 语句,因此三元运算符几乎没有用处。在现代嵌入式系统中,关注可读性和质量,而不是效率和空间问题。如果您的程序不适合,则优化空间(在编译器的帮助下)。如果您的程序运行速度太慢或错过计时机会,请再次在编译器的帮助下优化速度。

标签: c++ c embedded


【解决方案1】:

为什么会显示错误:“return”之前的预期表达式?

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

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

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

这里有什么需要改变的?

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

if (x > y) {
    printf("Hello World");
} else {
    return x;
}

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

【讨论】:

    【解决方案2】:

    三元运算符的主旋律是

    condition ? value_if_true : value_if_false

    如果满足条件,则语句计算为value_if_true,否则计算为value_if_false。

    阅读有关“三元运算符”的更多信息 [https://www.freecodecamp.org/news/c-ternary-operator/]

    如果您的概念不清楚,请尽量避免使用三元运算符。尝试使用if-else。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多