i = 1;
j = i++;
结果 i = 2,j = 1
如果是:
i = 1;
j = ++i;
结果 i = 2,j = 2
http://www.programmer-club.com/showSameTitleN/homework/4354.html
C++ Operator: Why should I use '++i' instead of 'i++'?
http://www.codeguru.com/forum/showthread.php?t=231052
i++的执行过程类似于:
temp = i
i = i+1
return temp
return i
------------------------
因为i++多一个动作.....所以++i比较快
就class的operator而言是对的, 但就纯资料而言都是一样快.如果是数字的operator, 那么i++便是:
mov ax,i
inc i
++i则是:
inc i
mov ax,i
两者是一样的.
理论上是这样子, 而這这也是 C++ 里 overloaded operator 的一般做法.
但以 built-in type 来说, 单纯的 ++i 或 i++,经过 optimization 后, 两者可能没什么差別.
也就是说:
(1) ++i;
(2) i++;
(3) i += 1;
(4) i = i+1;
Optimization 后的结果有可能是一样的.
正确的说法是: ++i绝对不会比 i++ 慢.
一般的做法是: 可能的话, 用 ++i; 有需要的话才用 i++.
Use ++i if possible; use i++ if necessary.
Optimize 后的結果是会使两者相同-这是因为当暂存器(尤指AX)有空时~
尤其是当会overflow时,是哪个地方造成overflow 对logic 是否正确的被翻成机器语言是十分重要的~
j = i++;
结果 i = 2,j = 1
如果是:
i = 1;
j = ++i;
结果 i = 2,j = 2
http://www.programmer-club.com/showSameTitleN/homework/4354.html
C++ Operator: Why should I use '++i' instead of 'i++'?
http://www.codeguru.com/forum/showthread.php?t=231052
i++的执行过程类似于:
temp = i
i = i+1
return temp
------------------------
++i的执行过程类似于
return i
------------------------
因为i++多一个动作.....所以++i比较快
就class的operator而言是对的, 但就纯资料而言都是一样快.如果是数字的operator, 那么i++便是:
mov ax,i
inc i
++i则是:
inc i
mov ax,i
两者是一样的.
理论上是这样子, 而這这也是 C++ 里 overloaded operator 的一般做法.
但以 built-in type 来说, 单纯的 ++i 或 i++,经过 optimization 后, 两者可能没什么差別.
也就是说:
(1) ++i;
(2) i++;
(3) i += 1;
(4) i = i+1;
Optimization 后的结果有可能是一样的.
正确的说法是: ++i绝对不会比 i++ 慢.
一般的做法是: 可能的话, 用 ++i; 有需要的话才用 i++.
Use ++i if possible; use i++ if necessary.
Optimize 后的結果是会使两者相同-这是因为当暂存器(尤指AX)有空时~
尤其是当会overflow时,是哪个地方造成overflow 对logic 是否正确的被翻成机器语言是十分重要的~