i++ 和 ++i 区别与分析
来源:互联网 发布:vb comdlg32.ocx 编辑:程序博客网 时间:2024/06/01 10:31
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 是否正确的被翻成机器语言是十分重要的~
- i++ 和 ++i 区别与分析
- i++与++i区别
- i++与++i区别
- ++i与i++区别
- i++和++i区别
- i++和++i区别
- i++与i--的分析
- 再次分析i++与i--
- i++与++i经典分析
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- i++与++i的区别
- ++i;与i++的区别
- ++i与i++的区别
- i++与++i的区别
- 2011-10-26
- 项目管理其实可以简单一点——团队建设
- android SQLite数据库基本操作示例
- Broadcast
- unable to cast object of type 'Microsoft.SharePoint.SPsite' to type 'Microsoft.SharePoint.SPWeb'
- i++ 和 ++i 区别与分析
- 函数调用堆栈分析
- WIFI
- JBOSS 5.0与tomcat 6.0端口设置
- Socket
- Python
- 使用crossdomain.xml让Flash/Flex可以跨域传输数据
- Davlik虚拟机技术揭秘之一
- 移动电视信号发生器(ISDB-T)