在做个java优化的PPT时,看到了i=i+1与i+=1的区别,在这之前还真没想到那么细。 1.x=x+1,x+=1及x++的效率哪个最高?为什么? x=x+1最低,因为它的执行如下。 (1)读取右x的地址; (2)x+1; (3)读取左x的地址; (4)将右值传给左边的x(编译器并不认为左右x的地 ...
分类:
其他好文 时间:
2018-03-05 22:25:08
阅读次数:
238
C语言提高笔记 标签(空格分隔): C++ C语言 day1 数组做函数参数的退回问题 数组做函数参数会退回为一个指针, 正确做法:把数组的内存首地址和数组的有效长度传给被调用函数。 实参的a 和 形参的a 的数据类型本质不一样, 形参中的数组,编译器会把它当成指针处理 只会分配四个字节。 形参写在 ...
分类:
编程语言 时间:
2018-03-04 11:48:48
阅读次数:
235
在对象拷贝后就立即被销毁的情况下,移动而非拷贝对象会大幅度提升性能。以及像 IO 类或 unique_ptr 这样的类,包含不能被共享的资源,不能拷贝但可以移动。而标准库容器、string 和 shared_ptr 类既支持移动也支持拷贝 右值引用: 右值引用是 c++11 为了支持移动操作引入的。 ...
分类:
移动开发 时间:
2018-02-11 23:37:40
阅读次数:
212
这篇文章要介绍的内容和标题一致,关于C++ 11中的这几个特性网上介绍的文章很多,看了一些之后想把几个比较关键的点总结记录一下,文章比较长。给出了很多代码示例,都是编译运行测试过的,希望能用这些帮助理解C++ 11中这些比较重要的特性。 关于左值和右值的定义 左值和右值在C中就存在,不过存在感不高, ...
分类:
编程语言 时间:
2018-02-10 11:25:16
阅读次数:
177
C++11 左值、右值、右值引用详解 左值、右值 在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。 在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a ...
分类:
编程语言 时间:
2018-02-10 11:17:57
阅读次数:
125
转载http://blog.csdn.net/renwotao2009/article/details/46335859 目录 ...
分类:
编程语言 时间:
2018-01-12 14:55:43
阅读次数:
164
复合语句:用花括号({})将多条语句组合在一起,以创建复合语句 使用运算符: 赋值运算符( = ), 加( + )减( - )乘( * )除( / )和求模运算符(%)(最后这个书里是这么写,我感觉是相当于delphi的mod) 递增运算符(++) 递减运算符(--) 后缀运算符是 先将右值赋给左值 ...
分类:
编程语言 时间:
2018-01-05 01:24:59
阅读次数:
154
我的理解 引用是一个左值,而常量引用是一个右值。两者最关键的地方在于,左值可以被取到地址,而右值取不到地址,这个性质就决定了右值不能在 “=” 的左侧。 从汇编角度去理解这个问题的话,就很好理解了,左值是一个内存单元里的数据,我们可以直接寻址找到它,而右值是一个立即数或者是寄存器里的值。 C与C++ ...
分类:
其他好文 时间:
2018-01-01 19:37:38
阅读次数:
173
通过关键字yield,可以从生成器中产生值,并返回。我们可以将生成器作为一个生产者来使用。 在协程中,通过使用关键字yield,还可以让具有yield的程序接收值。此时函数作为消费者,消费我们传入(send)的值。 在协程中,可以把yield作为右值来用。在foo函数中,我们这样写: n = yie ...
分类:
编程语言 时间:
2018-01-01 00:25:09
阅读次数:
172
1、左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体; 右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。 一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。 2、引用 引用是C++语法做的优化,引用的本质还是 ...
分类:
其他好文 时间:
2017-12-10 18:27:26
阅读次数:
125