问题标签 [pre-increment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
165 浏览

javascript - Javascript 的 ++ 和 -- 运算符的非典型用途

如果我从 Crockford 的“Javascript: The Good Parts”中正确回忆,他不赞成使用 ++ 或 -- 运算符,但我也倾向于记得他没有提供特别强烈的反对它们的论据。

下面是这些运算符的使用,我发现它们有助于使我的代码尽可能简洁,特别是在处理返回 -1 的函数/方法时,0 是第一个可能的有效返回值(以及正整数)。我会对 ++ 和/或的其他非典型用法感兴趣——它们强烈支持在有意义时使用这些运算符。

不认为这是为什么避免 JavaScript 中的自增(“++”)和自减(“--”)运算符的重复?而是推论:何时避免它们,而是利用它们为您带来优势。当然,我可能会弄错,并且可能有某种原因我没有想到为什么以下内容充满危险,尽管在我看来很优雅——如果我遗漏了以下内容的次优之处,我我也想知道

0 投票
6 回答
33048 浏览

c# - C# 中的前后增量

我对 C# 编译器如何处理前后递增和递减有点困惑。

当我编写以下代码时:

x之后将具有值 10。我认为这是因为预增量设置x5,这使得它5+5 评估为10。然后后增量将更新x6,但不会使用此值,因为那时10将分配给x

但是当我编码时:

然后x将在2之后。谁能解释为什么会这样?

0 投票
5 回答
541 浏览

c - ++nc 与 nc = nc + 1

在 K&R 第 1 章中:

该语句++nc提供了一个新的运算符 ,++表示加一。您可以改为编写nc = nc + 1,但++nc更简洁且通常更高效。

什么时候预增量比替代方案更有效?至少对于大多数事情来说,两者的汇编都是add(edit: or inc) 指令。它们何时不同?

0 投票
5 回答
1763 浏览

c++ - 增量如何工作?

可能重复:
任何人都可以解释这些未定义的行为(i = i++ + ++i,i = i++ 等......)
未定义的行为和序列点

好的,我们都知道 i++ 在下一行将值递增 1 并且 ++i 在同一行递增
(如果我在那里错了请纠正我)
,因此对于 c 的示例语句如下:

预期的输出应该是1 , 1,但它会给出1 , 0 ,所以人们可能会猜到我在这里要问的是为什么第二次链接 i打印0而不是1 当值已经增加时。

因此,如果后增量没有在同一行中增加值,那么后增量和前增量之间有什么区别?
编辑:将变量的名称从 i 更改为 a 以避免语法混乱。

0 投票
3 回答
394 浏览

c++ - 前/后增量说明

请对我放轻松,不要开枪,因为我还是新手。

当我运行这段代码时,我完全糊涂了,终生无法弄清楚为什么:

我得到以下结果:

而不是这些结果:

我从这段代码中得到:

任何人都可以用尽可能简单的语言解释第一个代码中发生了什么,以便它以这种方式打印结果吗?

0 投票
10 回答
1122 浏览

c++ - 增量、前置增量和后置增量

请帮我解决这个问题。表达式之后的步骤是:

//脚步:

1.- 增加 m1

2.- 将 temp1 分配给 offSpring

我一直认为括号内的表达式是第一个做的。但现在我很困惑。所以如果写这个:

如果步骤与第一个步骤相同,那么 i++ 和 ++i 有什么区别?

0 投票
2 回答
439 浏览

c++ - 为什么教科书在上下文不变时更喜欢“++x”而不是“x++”?

可能重复:
循环中 i++ 和 ++i 之间的区别?
C++ 中的 i++ 和 ++i 之间是否存在性能差异?
C++ 中的递增 - 何时使用 x++ 或 ++x?
为什么在语句中的其他任何地方都没有使用该值的情况下使用 ++i 而不是 i++?

为什么在 C++ 教科书中更倾向于写作,++x 而不是x++在前/后性质无关紧要的情况下发生这种情况?

一般来说,动作似乎是按宾语、动词顺序给出的

例如:

foo.size() 是“对象” foo,带有“动词”size

a + b 是“宾语” a,带动词+

在 EXCEL 中,您总是选择对象,然后指定动作(动词)。

注意:Lotus 1-2-3 以动词-宾语顺序做事,这对在 123 到 XL 过渡期间发展肌肉记忆的人造成了巨大的问题......

0 投票
2 回答
262 浏览

java - Java 前后递增

我无法理解以下代码块。

我的理解是循环运行三遍,执行以下操作

这转换为以下内容,因为 count 最初为 0:

输出如下,计数打印为 0。

有人可以向我解释一下吗?谢谢

0 投票
2 回答
244 浏览

c++ - 在赋值有效的 C++ 右侧使用预减运算符吗?

我几乎从不在任何地方放 ++ 或 -- 除了单独的行。我知道它们会导致未定义的行为,并且可能会成为调试的地狱。但出于冗长的目的,我很受诱惑。这是有效的代码吗?

只想

但是双向迭代器没有operator-()定义。

谢谢!

0 投票
4 回答
1805 浏览

c - 指针递增和取消引用(需要左值错误)

我试图了解指针递增和取消引用是如何结合在一起的,我这样做是为了尝试一下:

我希望这段代码能够执行以下操作之一:

  1. 先解引用再增加指针(打印word1)
  2. 首先取消引用然后增加值(打印 ord1)
  3. 取消引用指针 + 1(打印 word2)

但是编译器甚至不会编译它,并给出这个错误:lvalue required as increment operand我在这里做错了吗?