有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

返回值周围的java括号为什么?

经常看到这样的代码(C,C++和有时java):

return (value);

我看不出这些括号有什么好处。所以我的问题是,程序员是否假设return是某种返回值作为参数的函数,还是真的存在这些括号有意义的情况

我知道已经有人问过类似的问题here,但这只与ANSI C有关。我想知道C++中有哪些方面是没有的,java是没有答案的。p>


共 (4) 个答案

  1. # 1 楼答案

    大部分是遗产。K&;R C编程语言(1978)使用括号显示返回。一些旧的C编译器可能需要这个,但我不确定

  2. # 2 楼答案

    从技术上讲,没有理由在return中插入表达式。这真的是口味的问题

    也就是说,如果一个return表达式使用布尔运算符,我通常会用括号括起来。由于此类运算符通常被视为whileif的一部分,因此在我看来,更清楚的是,除了跳跃之外,您还希望使用该值做一些事情

    int out_of_range(int x)
    {
        return ((x < 1) || (x > 10));
    }
    
  3. # 3 楼答案

    首先,这不是强制性的,您将在返回表达式&;中看到它的重要性;不是价值观。但如果不使用括号,代码可能不太容易阅读(特别是在复杂表达式的情况下),并且可能会造成混淆。此外,可能需要注意的是,它不是一个函数(因为括号不是必需的)。您可能会注意到main()主体末尾的return 0;情况。 这里值得注意的是,0没有使用括号,这证明它不是一个函数。 因此,括号用于使编译器更易于阅读和理解代码

  4. # 4 楼答案

    关于C

    括号放在有表达式且希望返回值为该表达式值的位置即使如此,也不需要括号写这样的东西完全可以

    return x + y;
    

    程序员确实使它更具可读性

    因此,插入括号是意见和实践的问题


    关于C++

    有一个神秘的例子,括号很重要。引用this问题

    int var1 = 42;
    decltype(auto) func1() { return var1; } // return type is int, same as decltype(var1)
    decltype(auto) func1() { return(var1); } // return type is int&, same as decltype((var1))
    

    您可以看到返回的值是不同的,这是由于括号造成的。你可以通过this答案来详细理解


    对于java,括号没有任何区别。

    编码惯例建议使用

    return x + y;
    

    要了解更多信息,请阅读this答案


    <强>注释> <强> >我对java和C++了解不多。我的回答中关于java和C++的所有内容都是从其他答案中提取出来的。我这样做是为了整合这三种语言的不同约定。