【变量】
1.变量声明:
变量说明的一般形式是:
<存储类型> <数据类型 > <变量名> ;
2.变量初始化:
变量初始化只有一次, 声明时赋初值;
3.变量赋值:
可以赋值多次; 必须是声明后才能使用变量;
c程序 运行状态的 内存管理
【存储类型】
【auto】 栈
【局部自动变量】栈
1. 作用域:局部
2. 初始值不定
3. 生命周期:使用时效有限, 声明产生, 语句体结束销毁;
【全局变量】 静态存储区
1. 初始值默认;0
2. 作用域:全局;
3. 3. 生命周期:是整个程序;
【static】
【局部静态变量】静态存储区
1. 作用域: 局部
2. 初始值确定 默认0;
3. 生命周期:是整个文件;
【全局静态变量】静态存储区
1. 作用域:当前代码文件内;
2. 初始值确定 默认0;
3. 生命周期:是整个文件;
【register】
寄存器变量
1. 没有内存地址说法
2. 存取速度快;
【extern】
外部变量
1. 一般引用外部的全局变量
2. 可以说是全局变量;
总结:
【全局】全局变量 全局静态变量
【局部】局部自动变量 局部静态变量
变量会有就近原则!
***一些名词***
【生命周期】
时效
【作用域】
范围
【局部】
局部语句块
【全局】
整个程序
【运算符】
【算术运算符】
注意:
1. 实型不允许 做 % 运算!
2. 隐式强制转换会丢数据精度!
3. ++、 --;
前缀++a; 先自增,再参与运算;
后缀a++; 参与运算,后自增;
前缀--a; 先自减, 后参与运算;
后缀a--; 参与运算,后自减;
eg:
int i = 0;
int ret = 0;
ret = i++ + i++;
思路:A=0 i=1 --> B=1 --> + A+B==1 --> i = i+1 i==2;
i = 2 ret = 1
【关系运算符】
1. = 和 ==
if(0 == i){ }
2. <= >= 符号顺序;
3. >= && <=
>= || <=
【逻辑运算符】
!
&&
||
【位运算法符】
1. ~
2. &
3. |
4. ^
5. n<<4 n>>2
【向左位移】
有符号数&无符号数: 自动补零;
【向右位移】
无符号数:自动补零; 有符号数,补符号位;
【?:】三目运算符
A ? B : C
(a>b)?a+1 : b+2
类似:
if(判断表达式){ 语句块1 } else { 语句块2 }
【,】优先级最低
注意:
&& 优先级比 || 高
【输入输出函数】没有IO
1. char a = 'a'; putchar(a);
2. char a = getchar();
3.
指针 == 地址
【作业】
(*)1、如何把一个无符号数的某位快速置1?
(*)2、如何把一个无符号数的某位快速清0?
(*)3、 unsigned int a = 0x20;
a = a>>2;
a = ~a;
a = ?
(**)4、用代码实现终端输入一行字符(包括空格和其他特殊字符),原样输出。 (控制语句)putchar getchar
(***)5、如何利用位运算把一个十进制数转化成一个十六进制数?(控制语句)