您的位置:首页 > 编程语言 > C语言/C++

C++学习小记(位运算,函数指针, 联合体,枚举, 逗号运算符)

2013-05-09 10:44 218 查看
一、位运算

举例说明:
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐