问题标签 [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.
javascript - Javascript 的 ++ 和 -- 运算符的非典型用途
如果我从 Crockford 的“Javascript: The Good Parts”中正确回忆,他不赞成使用 ++ 或 -- 运算符,但我也倾向于记得他没有提供特别强烈的反对它们的论据。
下面是这些运算符的使用,我发现它们有助于使我的代码尽可能简洁,特别是在处理返回 -1 的函数/方法时,0 是第一个可能的有效返回值(以及正整数)。我会对 ++ 和/或的其他非典型用法感兴趣——它们强烈支持在有意义时使用这些运算符。
我不认为这是为什么避免 JavaScript 中的自增(“++”)和自减(“--”)运算符的重复?而是推论:何时不避免它们,而是利用它们为您带来优势。当然,我可能会弄错,并且可能有某种原因我没有想到为什么以下内容充满危险,尽管在我看来很优雅——如果我遗漏了以下内容的次优之处,我我也想知道
c# - C# 中的前后增量
我对 C# 编译器如何处理前后递增和递减有点困惑。
当我编写以下代码时:
x
之后将具有值 10。我认为这是因为预增量设置x
为5
,这使得它5+5
评估为10
。然后后增量将更新x
为6
,但不会使用此值,因为那时10
将分配给x
。
但是当我编码时:
然后x
将在2
之后。谁能解释为什么会这样?
c - ++nc 与 nc = nc + 1
在 K&R 第 1 章中:
该语句
++nc
提供了一个新的运算符 ,++
表示加一。您可以改为编写nc = nc + 1
,但++nc
更简洁且通常更高效。
什么时候预增量比替代方案更有效?至少对于大多数事情来说,两者的汇编都是add
(edit: or inc
) 指令。它们何时不同?
c++ - 增量如何工作?
可能重复:
任何人都可以解释这些未定义的行为(i = i++ + ++i,i = i++ 等......)
未定义的行为和序列点
好的,我们都知道 i++ 在下一行将值递增 1 并且 ++i 在同一行递增
(如果我在那里错了请纠正我)
,因此对于 c 的示例语句如下:
预期的输出应该是1 , 1
,但它会给出1 , 0
,所以人们可能会猜到我在这里要问的是为什么第二次链接
i
打印0
而不是1
当值已经增加时。
因此,如果后增量没有在同一行中增加值,那么后增量和前增量之间有什么区别?
编辑:将变量的名称从 i 更改为 a 以避免语法混乱。
c++ - 前/后增量说明
请对我放轻松,不要开枪,因为我还是新手。
当我运行这段代码时,我完全糊涂了,终生无法弄清楚为什么:
我得到以下结果:
而不是这些结果:
我从这段代码中得到:
任何人都可以用尽可能简单的语言解释第一个代码中发生了什么,以便它以这种方式打印结果吗?
c++ - 增量、前置增量和后置增量
请帮我解决这个问题。表达式之后的步骤是:
//脚步:
1.- 增加 m1
2.- 将 temp1 分配给 offSpring
我一直认为括号内的表达式是第一个做的。但现在我很困惑。所以如果写这个:
如果步骤与第一个步骤相同,那么 i++ 和 ++i 有什么区别?
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 过渡期间发展肌肉记忆的人造成了巨大的问题......
java - Java 前后递增
我无法理解以下代码块。
我的理解是循环运行三遍,执行以下操作
这转换为以下内容,因为 count 最初为 0:
输出如下,计数打印为 0。
有人可以向我解释一下吗?谢谢
c++ - 在赋值有效的 C++ 右侧使用预减运算符吗?
我几乎从不在任何地方放 ++ 或 -- 除了单独的行。我知道它们会导致未定义的行为,并且可能会成为调试的地狱。但出于冗长的目的,我很受诱惑。这是有效的代码吗?
我只想做
但是双向迭代器没有operator-()
定义。
谢谢!
c - 指针递增和取消引用(需要左值错误)
我试图了解指针递增和取消引用是如何结合在一起的,我这样做是为了尝试一下:
我希望这段代码能够执行以下操作之一:
- 先解引用再增加指针(打印word1)
- 首先取消引用然后增加值(打印 ord1)
- 取消引用指针 + 1(打印 word2)
但是编译器甚至不会编译它,并给出这个错误:lvalue required as increment operand
我在这里做错了吗?