一个原始值的临时副本!
来源:互联网 发布:港澳台电视直播软件下载 编辑:程序博客网 时间:2024/06/09 13:39
让我们来看看这最后一行是如何工作的更详细。首先,编译器将启动一个与x(5)相同的值的x的临时副本。然后它将原来的x从5增加到6。然后编译器评估临时副本,该副本计算为5,并将该值赋给Y。然后将临时副本丢弃。
因此,Y结束了5的值,x结束的值为6。
在第三行中,x和y是递增/递减之前,他们的评价,所以他们的新值打印由cout。在第五行,一个原始值的临时副本(x = 6,y = 4)发送给cout,然后原来的x和y是递增的。这就是为什么从后缀式操作符的结果没有改变到下一行。
规则:有利于后递增和后递减的预增量和预减量。前缀版本不仅更加高效,你就不太可能遇到奇怪的问题。
副作用
一个函数或表达式被称为有一个副作用,如果它修改一些状态(例如,在内存中的任何存储信息),输入或输出,或调用有副作用的其他功能。
大部分时间,副作用是有用的:
因此,Y结束了5的值,x结束的值为6。
这里是另一个例子显示的差异之间的前缀和后缀版本:
int x = 5, y = 5;cout << x << " " << y << endl;cout << ++x << " " << --y << endl; // prefixcout << x << " " << y << endl;cout << x++ << " " << y-- << endl; // postfixcout << x << " " << y << endl;
在第三行中,x和y是递增/递减之前,他们的评价,所以他们的新值打印由cout。在第五行,一个原始值的临时副本(x = 6,y = 4)发送给cout,然后原来的x和y是递增的。这就是为什么从后缀式操作符的结果没有改变到下一行。
规则:有利于后递增和后递减的预增量和预减量。前缀版本不仅更加高效,你就不太可能遇到奇怪的问题。
副作用
一个函数或表达式被称为有一个副作用,如果它修改一些状态(例如,在内存中的任何存储信息),输入或输出,或调用有副作用的其他功能。
大部分时间,副作用是有用的:
12345678910111213int add(int x, int y){ return x + y;} int main(){ int x = 5; int value = add(x, ++x); // is this 5 + 6, or 6 + 6? It depends on what order your compiler evaluates the function arguments in std::cout << value; // value could be 11 or 12, depending on how the above line evaluates! return 0;}
0 0
- 一个原始值的临时副本!
- Clone 创建一个对象的副本
- 启动一个守护进程的唯一副本
- Android 创建一个原图的副本
- 得到一个临时的文件名称
- 编译器总是要为函数的每个参数制作临时副本
- 返回一个临时变量的右值引用,那么临时对象什么时候释放?
- autorun病毒的一个原始预防方法
- 一个“dirt simple”download-and-install CPAN的副本
- Replica Set配置一个隐藏的副本集成员
- 为什么不能从子函数中返回临时对象的指针和引用,却可以返回一个临时变量的值
- 一个关于临时对象的BUG(上)
- 一个关于临时对象的BUG(下)
- 一个用临时表的分页方案
- 一个释放临时表空间的实例
- 一个关于临时对象的BUG
- 一个释放临时表空间的实例
- 一个临时能用来上骨狗的ip
- 【剑指offer】数值的整数次方
- 仿iOS个人资料页面布局可以上下滑动
- RX操作符之辅助操作一(materialize、dematerialize、timestamp、serialize、replay、observeOn、subscribeon、dooneach)
- 10050---java线程安全总结
- Load和CPU利用率是如何算出来的
- 一个原始值的临时副本!
- Java 重写(Override)与重载(Overload)
- java之标示符、变量学习(一)
- HDOJ 3037 Saving Beans
- (七)maven核心概念-Repositories
- 利用FragmentTabHost完成底部菜单
- 20160807 作业调度方案 链表
- 20160808
- 05、文字产生动态光影效果