【发布时间】:2019-12-20 01:38:41
【问题描述】:
在我看到的代码中,普通样式的 java for 循环如下:
for(int i = 0; i < n; i++){\\do stuff}
在c++中,等价的例子可以写成如下:
for(int i = 0; i < n; ++i){\\do stuff}
我看不出语法差异的原因。我读过 ++i 可能会稍微快一点,这证明了它在 c++ 中的使用是合理的,但是为什么我们在 java 中使用 i++ 呢?还有,为什么不叫它++c呢?
澄清: 我感兴趣的是为什么两种语言之间的语法差异会有所不同,而不是两种编写 for 循环的方式之间的差异是什么。据我所知,这可能不是出于实际原因,而是出于历史原因,我想知道这些原因是什么。
【问题讨论】:
-
请注意,您给出的 for 循环示例没有实际区别,至少在 Java 方面是这样。但是,根据上下文的不同,可能存在显着差异。
i++将递增并返回旧值,而++i将递增并返回新值(同样,至少在Java 中是这样)。 -
在 C++ 的这种特定情况下,两者之间也没有任何相关的区别。后缀增量将需要保存旧值的临时副本,但这没有实际区别,因为它将针对相同的代码进行优化。
-
我假设 ot 来自未优化的代码,
++i会更有效。但是,即使是最基本的优化,任何编译器都会优化i++。 -
@AlexLi 您能否在您的问题中添加一句话来澄清这一点?对我来说,您的问题并不清楚您对历史背景而不是实际相关性感兴趣。
-
“我们为什么不叫它++c”。笑话是:C++ 是 C 的改进,所以增量,但我们返回旧值,因为我们继承了 C 的任何缺陷,也因为大多数程序员(至少在开始时)只是用 C++ 编译器编写 C。老师在
std::vector之前显示new[], ....