一、位运算
举例说明: a &= ff00;//&(与运算) 将变量a的低16位置0
a |= ff00;// |(或运算)将变量a的高16位置1
^(异或运算):可用于交换两变量的值
a ^= b; b ^= a; a ^= b; //交换a和b两变量的值
移位运算:
a << n; //左移n位 相当于 a * (2的n次幂)
a >> n; //右移n位 相当于 a / (2的n次幂)
二、联合体(union) 和 枚举(enum)
联合体:共享同一组内存单元
注意在联合体中,任何两个数据不会同时有效。由于是共享内存空间,会产生覆盖。例如下代码:
#include <iostream>
using namespace std;
int main() {
union {
char c;
int i;
double d;
} mark;
mark.i = 4;
mark.c = 'a';
cout << sizeof(mark) << endl; //输出 8
cout << mark.c << " " << mark.i << endl; //输出 "a 97"
return 0;
}
枚举:对于其中的值是默认递增的(从0开始)
例:enum Weekday {SUN = 7, MON = 1, TUE}; // SUN为7 ,MON为1,TUE为2
enum Weekday {MON, TUE}; // MON为0,TUE为1
三、逗号运算符(,)
执行顺序从左到右,整个逗号表达式的返回值为最右方的表达式的值
例如:a = 3 * 5, a * 4; // 先执行语句a = 3 * 5,再执行 a * 4。整行语句的返回值为a * 4的值 为60
四、函数指针
举例说明:
#include <iostream>
using namespace std;
void A(int a) {
cout << "A(): " << a << endl;
}
void B(int b) {
cout << "B(): " << b << endl;
}
void C(int c) {
cout << "C(): " << c << endl;
}
int main() {
typedef void (*functionPtr)(int );
functionPtr fp;
fp = A;
fp(1); //输出 "A(): 1"
fp = B;
fp(2); //输出 "B(): 2"
fp = C;
fp(3); //输出 "C(): 3"
return 0;
}