[C_3]位运算&控制结构&枚举

4 位运算应用

&

测试某个二进制位的某位是1还是0

|

测试某位是1还是0

^

交换两个数

~


<<

左移n位相当于乘2^n

>>

右移b位相当于除2^n

注意:左移或者右移不能超其二进制数的总位数 ,左移补0,右移补符号位。

#include<stdio.h>
int main()
{
	int n = 0 , m = 0;
	printf("请输入一个整数:\n");
	scanf("%d",&n);
	printf("&测试第5位是1还是0:");
	printf("%d\n",(n&16)>>4);
	printf("|测试第5位是1还是0:");
	printf("%d\n",((n|1)<<27)>0?0:1);
	printf("请再输入一个整数:\n");
	scanf("%d",&m);
	printf("^交换两个整数的值:\n");
	printf("原值n = %d,m = %d\n",n,m);
	m = m^n , n = m^n, m =m^n;
	printf("交换后的值n = %d,m = %d\n",n,m);
	return 0;
}








右移的应用:取得某个字节的数据
m=0x3862517b
(char)m //得到最右面一个字节7b
取得倒数三个字节的数据:先右移16位,然后取最后一个字节
(char)(m>>16)

左移的应用:把多个数据凑成一个整数
int a=0x12,b=0x34,c=0x56,d=0x78
a<<24,b<<16,c<<8,d //可以用加法合并
(a<<24)|(b<<16)|(c<<8)|d //用按位或合并


5 控制结构

5.1 switch()

括号里面可以使整型,字符,不能是浮点小数,别忘每项最后的break

5.2 continue和break

continue结束本次循环,跳过循环体中剩余内容 ,只能用于循环体中
break 终止循环
5.3 for中定义变量

for(int I = 0; ; )若想如此定义,编译时需加 -std = c99(c98不要支持)


6枚举

枚举变量 枚举常量,是字面量,默认从0开始,可以指定:


enumbool{true=1,false,a=2,s} //false值为2,s值为3


注意定义变量时enum e_name作为一个整体,不同与C++可以只使用类型名,所以


C语言中,使用typedef重命名.


enum gender{male,famale};


enum gender s=male;


typedef enum{true, false} bool;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值