为什么人们写--i?

Blu*_*ire 4 javascript c++ java language-agnostic operators

可能重复:
C++中的增量 - 何时使用x ++或++ x?

我已经看过像循环中i++常用的东西for.但是当人们使用--而不是++出于某种原因,有些人倾向于写作--i而不是i--.

上次我检查时,它们都工作(至少在JavaScript中).谁能告诉我,如果是这样的话在其他C家族语言,如果是,为什么有些人喜欢--ii--

Ion*_*zău 12

++i比...更快i++.为什么?请参阅简单说明.

我++

i++ 将增加i的值,但返回预先递增的值.

  • temp = i
  • i 增加
  • temp 退回

例:

i = 1;
j = i++;
(i is 2, j is 1)
Run Code Online (Sandbox Code Playgroud)

++我

++i 将增加i的值,然后返回递增的值.

例:

i = 1;
j = ++i;
(i is 2, j is 2)
Run Code Online (Sandbox Code Playgroud)

这是--i和的相似之处i--.


T.J*_*der 5

我不相信prefix(++i)与postfix(i++)的偏好取决于它是增量还是减量.

至于为什么,我更喜欢可能的前缀,因为我的母语是英语,主要是一个动词前对象结构("吃晚餐","开车"),所以"增量i"或"减量i"更自然我比" i减量".当然,如果我使用结果,我很乐意使用postfix,我需要在表达式中增加之前的值(而不是递增的值).


Ema*_*ini 5

历史上,递增/递减运算符由堆栈管理激励.当你在堆栈上推送一个元素时:

*(stackptr++) = value
Run Code Online (Sandbox Code Playgroud)

当你弹出:

value = *(--stackptr)
Run Code Online (Sandbox Code Playgroud)

(这些被转换为单个ASM指令)

因此,人们习惯于在之前和之后递增.

您可以在填写直接和反向顺序时看到另一个惯用示例:

for (p=begin;p!=end;) 
    *(p++) = 42;

for (p=end;p!=begin;) 
    *(--p) = 42;
Run Code Online (Sandbox Code Playgroud)