1、位操作
1.1 按位与(&)
跟1按位与保持不变,跟0按位与清零。
作用:在某些位保持不变的情况下,某些位清零。 ch &= mask;
查看某一位的值:if((ch & mask) == mask)
1.2 按位或(|)
跟1按位或置1,跟0按位或保持不变
作用:在某些位保持不变的情况下,某些位置1。 ch |= mask;
1.3 按位取反(~)
用于间接构造某些数据,如(~0)。
1.4 按位异或(^)
跟1按位异或取反,跟0按位异或保持不变。
作用:在某些位保持不变的情况下,某些位取反。 ch ^= mask;
自身异或,清零。
1.5 左移(<<)
规则:高位溢出,低位补零。
对int_32的数据,移位大于32位会出现什么情况?
答:先默认对32求余,后高位溢出,低位补零。
作用:在不溢出的情况下, 每左移1位相当于数乘以2
1.6 右移(>>)
规则:右移,低位舍弃。先默认对32求余。
高位:无符号的数、有符号的正数, 高位补零。
有符号数的负数,取决于所用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。
1.7 运算顺序
() >
成员运算
> (^/!) >
算术
>
关系
> (>> <<)
位逻辑
(&|^)
>
逻辑
>
赋值
>
,
2、预处理
2.1 宏定义
#define 定义的宏,只能在
一行内
表达
(
换行符表示结束而非空格
)
,如果想多行表达,则需要加续行符\
。
2.2 条件编译
1、单双路
#ifdef /#ifndef
#else
#endif
2、单双多路
#if
#elif
#endif
3.头文件包含
3.1 包含方式
< >
:#include<stdio.h>
,从系统指定路径中搜索包含头文件。
" "
:#include"myString.h"
,从工程当前路径中搜索包含头文件,如果当前工程路径下
没有的话,则到系统路径下搜索包含。
3.2 多文件编程
1、谁用谁包含
2、自包含:.c 文件中存在相互调用的关系,自包含可以免去了多余的前向声明。
3、避免头文件重复包含