一、运算符
= | 赋值,把等于号右边的值赋值给左边的值。 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 等号的两边不能有小数点 |
== | 判断==的右边的值是否等于左边的值 |
!= | 判断!= 的右边的值是否不等于左边的值 |
& | 位与 |
&& | 逻辑与 |
| | 位或 |
|| | 逻辑或 |
位运算指的是将值转换为二进制进行运算。
1byte=8bits;
自增自减
++: 自身加1,再把结果赋值给自身
–: 自身减1,再把结果赋值给自身
a++:先运算整个表达式,再加1
++a:先加1,再运算整个表达式
a–:先运算整个表达式,再减1
–a:先减1,再运算整个表达式
a=10;
+=: a+=5; // a = a + 5 //15
a=10;
-=: a-=5; // a=a-5 //5
a=10;
*= a*=5// a=a*5 // a=10*5=50
a=10;
/= a/=5 // a=a/5 // a=10/5=2
a=10;
%= a%=5 // a=a%5 // a = 10%5=0
二、变量的赋值,以及作用域,生命周期。
1.C语言中变量的存储方式
代码区 | 存放CPU执行的机器指令,代码区是可共享,并且是只读的。 |
---|---|
数据区 | 存放已初始化的全局变量、静态变量(全局和局部)、常量数据。 |
BBS区 | 存放的是未初始化的全局变量和静态变量。 |
栈 区 | 由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程序员手动管理。 |
堆区 | 堆是由malloc()函数分配的内存块,使用free()函数来释放内存,堆的申请释放工作由程序员控制,容易产生内存泄漏 |
2. 变量的赋值
使用"="对变量进行赋值。把等号右边的值赋值给左边的值。
1)定义变量的同时初始化。
int a = 100;
2)先定义,后初始化
int a; -> 先申请空间,然后使用变量a间接访问内存空间,再赋值一个随机值。
a = 100; -> 把100存放到a所代表的空间中
3. 变量生命周期与作用域?
生命周期:这个变量从什么时候开始出现在内存空间中到什么时候从内存释放掉的这个过程。
作用域:这个变量在程序中能够用到的地方。
4. 局部变量 Vs 全局变量
1)什么是局部变量?什么是全局变量?
在程序中函数体内定义的变量,就是局部变量,在函数体外部的定义的变量,就是全局变量。
int b; -> 全局变量
int main(int argc,char *argv[])
{
int a; -> 局部变量
return 0;
}
2)两者在内存空间中申请的位置
#include <stdio.h>
int c = 10; -> 10在rodata段,变量c的空间在data段
int d; -> 变量d的空间在bss段
int main(int argc,char *argv[])
{
int a; -> 栈区
int b = 100; -> 栈区,100在rodata段
return 0;
}
3)初始化值
局部变量未初始化 -> 随机值
全局变量未初始化 -> 0
4)生命周期
局部变量在定义在该变量的函数结束时,就会释放空间。
全局变量一开始就会申请,程序结束,全局变量才会释放。
5)作用域
局部变量作用范围就是函数的内部,全局变量作用域就是整个程序。