#include <iostream>
using namespace std;
int main()
{
int c;
int d = 10; // 测试自增、自减
c = ++d; // ++d 是先对 d 的值加 1,再使用 d 的值执行该行命令
cout << "d 等于 " << d << endl;
cout << "c 等于 " << c << endl ;
int e = 10; // 测试自增、自减
c = e++; // e++ 是先使用 e 的值执行该行命令,执行完后再对 e 的值加 1
cout << "e 等于 " << e << endl;
cout << "c 等于 " << c << endl ;
return 0;
}
输出结果:
d 等于 11
c 等于 11
e 等于 11
c 等于 10
1959cpp-increment-decrement-operators
算术运算符 ++d 和 d++ 的区别:
++d 是先加,先对 d 的值加 1,再使用 d 的值执行该行命令。
d++ 是后加,先使用 d 的值执行该行命令,执行完后再对 d 的值加 1。
实例:
自减运算符同理。
1958C++ 资源库 C++ STL 教程
C++ STL 之 vector 的 capacity 和 size 属性区别
size 是当前 vector 容器真实占用的大小,也就是容器当前拥有多少个容器。
capacity 是指在发生 realloc 前能允许的最大元素数,即预分配的内存空间。
当然,这两个属性分别对应两个方法:resize() 和 reserve()。
使用 resize() 容器内的对象内存空间是真正存在的。
使用 reserve() 仅仅只是修改了 capacity 的值,容器内的对象并没有真实的内存空间(空间是"野"的)。
此时切记使用 [] 操作符访问容器内的对象,很可能出现数组越界的问题。
下面用例子进行说明:
运行结果为:(win 10 + VS2010)
注: 对于 reserve(10) 后接着直接使用 [] 访问越界报错(内存是野的),大家可以加一行代码试一下,我这里没有贴出来。
这里直接用[]访问,vector 退化为数组,不会进行越界的判断。此时推荐使用 at(),会先进行越界检查。
1957C++ 多线程
要注意内存泄露问题。
如果设置为 PTHREAD_CREATE_JOINABLE,就继续用 pthread_join() 来等待和释放资源,否则会内存泄露。
1956C++ 多线程
c++ 11 之后有了标准的线程库:
之前一些编译器使用 C++11 的编译参数是 -std=c++11
1955C++ 信号处理
Sleep 函数
功能:执行挂起一段时间,也就是等待一段时间在继续执行
用法:Sleep(时间)
注意: