2012.11.28 记
例16:对齐凌乱代码
快捷键:Alt+F8(ctrl+A--àalt+F8全部对齐)
附:ctrl+F8为单行选定
多行代码的移动:
1、先选定
2、整体左移:shift+ctrl+M
整体右移:Tab
例17:判断代码括号是否匹配
1、移到括号前
2、Ctrl+]或ctrl+E
3、if 匹配
移到匹配的括号前;
else
不移动,还会警报;
例18:修改可执行文件的资源
1、File-->open-->open as,resources-->打开某个.exe或.dll格式文件
这样文件中包含的资源就会显示出来,可以进行修改。
例如:修改图标、对话框样子等等
例38:不借助第3个变量使2个变量的值互换
运用异或运算符!
例:
int i=1,j=2;
cout<<i<<' '<<j<<endl;
i=i^j;
j=i^j;
i=i^j;
cout<<i<<' '<<j<<endl;
结果:
1 2
2 1
注:类似于连连看,两两相同抵消。
例40:带参数的宏定义,实现数组互换
宏定义的语法:
#define 宏名(参数表) 字符串
注意事项:
1、宏的展开:宏名后面括号内的实参替换#define命令行中的形参。
2、宏名和后面的括号中间不能加空格,否则空格后的字符都会被替代。
3、在带参数的宏定义中,形参不分配内存单元,因此不必做类型定义。
例:
#define swap(a,b) {int c;c=a;a=b;b=c;}
for(i=0;i<10;i++)
swap(a[i],b[i]); //这一行,实参a[i],b[i]传递给形参a,b,然后替代为花括号里的内容(包括花括号)
注:
1、宏定义是用宏名替代字符串,但不进行正确性检查
2、宏定义行末不能加分号;
3、#define命令出现在函数外面,宏名的有效范围为定义命令之后到源文件结束
4、可以用#undef命令终止宏定义的作用域
5、宏定义时,可以引用已定义的宏名,可以层层替换
6、程序中用双引号“”包起来的字符串内的字符,不进行替换
7、宏定义只作字符替换,不分配内存空间
例41:位运算符的使用
位运算符:
& 按位与运算符 都为1结果才为1,否则为0
| 按位或运算符 只要有一个为1,结果就为1,只有两个都为0,结果才为0
^ 异或运算符 两个二进位同号为0,否则为1
例:~ 取反运算符 1取反为0,0取反为1
a=2,b=4,c=6,d=8
a & c = 2
b | d = 12
a ^ d = 10
~ a = 4294967293
注:
1.位运算不需要加载头文件
2.cout<<"a&c="<<a&b<<endl;
会出错,因为&运算符优先级低于<<运算符。
但可以:
cout<<"a+b="<<a+b<<endl;
因为+运算符优先级高于<<运算符。