【发布时间】:2015-11-04 11:13:01
【问题描述】:
这两者有什么区别吗?这将程序分为两个不同的点或什么,请提供它的所有细节。 return 是一个语句,那么为什么还要使用return(1)(看起来像一个函数调用),请详细说明“它是如何工作的”?
【问题讨论】:
-
虽然括号在
return中是多余的,但有些人认为它们在其他地方会有所不同,see here
这两者有什么区别吗?这将程序分为两个不同的点或什么,请提供它的所有细节。 return 是一个语句,那么为什么还要使用return(1)(看起来像一个函数调用),请详细说明“它是如何工作的”?
【问题讨论】:
return中是多余的,但有些人认为它们在其他地方会有所不同,see here
它们是等价的。类似于:
1 + 2
相当于:
(1) + (2)
后者是合法的,但括号没用。
【讨论】:
在运行时根本不应该有任何功能或性能差异,因为您要么返回表达式1,要么返回表达式(1),这是一回事。
这与以下情况没有什么不同,语句应该具有相同的运行时间成本:
int a = 42;
int b = (42);
编译时可能存在最小差异,因为编译器必须评估翻译单元中的更多字符,但如果它很明显,我会非常感到惊讶。
【讨论】:
return 3 * (7 + 12) 对于您想要覆盖评估顺序的表达式可能是必需的,但 return (3 * (7 + 12)) 永远不会。
绝对没有区别:在此上下文中的括号并不意味着函数调用,它们是用于强制执行特定评估顺序的常规括号(此处完全没有必要)。
C 允许程序员在任何表达式周围放置括号,无论出于何种原因,只要括号平衡,编译器就会以相同的方式解释 return 的两个版本:
return (((((1)))));
【讨论】: