C 退货1和退货(1)之间有什么区别?

C 退货1和退货(1)之间有什么区别?,c,function,return,C,Function,Return,这两者有什么区别吗?这把程序分为两个不同的点或什么,请提供它的所有细节。return是一个语句,那么为什么还要使用return(1)(看起来像一个函数调用),请给出“它实际上是如何工作的”的详细信息 完全没有区别:这里的括号并不表示函数调用,它们是用于强制执行特定求值顺序的常规括号(这里完全不需要) C允许程序员出于任何原因在任何表达式周围放置括号,因此编译器以相同的方式解释两个版本的return,只要括号保持平衡: return (((((1))))); 这绝对没有区别:这里的括号并不意味着

这两者有什么区别吗?这把程序分为两个不同的点或什么,请提供它的所有细节。return是一个语句,那么为什么还要使用
return(1)
(看起来像一个函数调用),请给出“它实际上是如何工作的”的详细信息

完全没有区别:这里的括号并不表示函数调用,它们是用于强制执行特定求值顺序的常规括号(这里完全不需要)

C允许程序员出于任何原因在任何表达式周围放置括号,因此编译器以相同的方式解释两个版本的
return
,只要括号保持平衡:

return (((((1)))));

这绝对没有区别:这里的括号并不意味着函数调用,它们是用于强制执行特定求值顺序的常规括号(这里完全不需要)

C允许程序员出于任何原因在任何表达式周围放置括号,因此编译器以相同的方式解释两个版本的
return
,只要括号保持平衡:

return (((((1)))));

在运行时应该没有任何功能或性能差异,因为返回的是表达式
1
或表达式
(1)
,两者是相同的

与以下情况没有什么不同,在这种情况下,语句应该具有相同的运行时成本:

int a = 42;
int b = (42);

编译时可能存在最小的差异,因为编译器必须在翻译单元中计算更多的字符,但如果差异明显,我会感到非常惊讶。

在运行时应该没有任何功能或性能差异,因为您要么返回表达式
1
,要么返回表达式
(1) 
,这是同样的事情

与以下情况没有什么不同,在这种情况下,语句应该具有相同的运行时成本:

int a = 42;
int b = (42);

编译时可能存在最小的差异,因为编译器必须在翻译单元中计算更多的字符,但如果差异明显,我会感到非常惊讶。

它们是等效的。类似于:

1 + 2
相当于:

(1) + (2)

后者是合法的,但括号是无用的。

它们是等效的。类似于:

1 + 2
相当于:

(1) + (2)

后者是合法的,但括号是无用的。

尽管括号在
返回中是多余的,但有些人认为它们在其他地方起作用,尽管括号在
返回中是多余的,有些人认为它们在其他地方起作用,所以我会假设()只有在返回之前进行一些计算以提高代码的可读性时,才更可取。@learner,是的,但在整个表达式之外永远不需要它。换句话说,对于要覆盖求值顺序的表达式,
return(3*(7+12)
)
永远不会。因此,我假设()只有在返回之前进行一些计算时才是首选的,以使代码更可读。@learner,是的,但在整个表达式之外永远不需要它。换句话说,while
return 3*(7+12)
对于要覆盖求值顺序的表达式可能是必需的,
返回(3*(7+12))
永远不会被忽略。