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

一、位运算

举例说明: 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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值