一.变量:在运行过程中可以改变的量
1.赋值
符号“=” ;列入a=10,意思是将10赋予a,a位于等号左端,称为左值;10位于等号右端,称为右值。注:10=a这种形式是错误的。
2.栈(stack)
(1)定义:是限定仅在表尾进行插入或删除操作的线性表。表尾端称为栈顶,表头端称为栈底。又称为先进后出型线性表。
(2)大小:1M~2M
3.作用域:花括号之间。
4.生命周期:程序/函数运行完,变量的内存就会自动回收。
5.规则:定义变量时一般由数字,字母,下划线组成,数字不能放在第一位。注:当定义一个变量时,当默认值为随机值时,系统会报错,即不能够使用,为初始化的局部变量。例如:
int main(){
in b;
printf("%d",b);//不能够使用未初始化的局部变量。
}return 0
二.常量
1.定义:在运行过程中不可以改变的量。例如:
const int a =10;//此时a为常变量,编译的时候确定他的值
注:定义常变量的时候一定要初始化。const修饰的变量将变为常变量,其被称为关键字。
2.#define:宏
用define定义时末尾不需要加“;”
#define SIZE 10
预编译:宏替换,注释的替换(空格),头文件的引入。
三.运算符
1.():函数;提升优先级;强制类型转换
int main();
3*(2+3);
int a=10;
char b = (char) a;
2.[]:数组元素下标
int arr[5]{1,2,3,4,5};
注:数组入栈下标小的在上,大的在下。
3.!:逻辑非
int a=10;
printf("!a==%d\n",!a)//结果为0,10取反的真值是0
printf("!!a==%d\n",!!a)//结果为1,0取反的真值时1
4.~:按位取反;>>:按位右移;<<:按位左移;^:按位疑惑;&:按位与;|:按位或
例子:11:0000 1011
~11:1111 0100
11>>1:0000 0101====>5(11/2^1)
11>>2:0000 0010====>2//右移相当于除法
11<<1:0001 0110====>22
11<<2:0010 1100====>44//左移相当于乘法
问:若将一个数扩大8倍怎么办
答:左移3位
13:0000 1101
11:0000 1011
11&13:0000 1001
11|13:0000 1111
11^13:0000 0110
5.++:增1:–:减1
a++:后置先赋值再加
++a:前置同时赋值与加
int i=1,i2=0,i3=2;
if(i++||i2++||i3++);//输出结果为202,i=1,为真,加一次,直接结束
if(i++&&i2++&&i3++);//输出结果为212,第一个为真,加完继续,第二个为假,加一次结束
int i=0,i2=0,i3=2;
if(i++||i2++||i3++);//输出结果为113,第一个为假,加完继续,第二个为假,加完继续,第三个为真,加完结束
6.*:指针间接引用符
(1)作用:代表指针 ;简介访问符==>解引用
int *a=&p;
7.sizeof:求当前变量的字节数
int *p=&a;
printf("%d\n",sizeof(a))//结果为4,所有的指针,不管什么类型全部为4个字节
8./:除
float f1 = 5/2;//2.000000 取整数部分
float f2 = (float)5/2;//2.500000
float f3 = (float)(5/2);//2.000000
float f4 = 5/(float)2;//2.500000
9.%:整数取余
printf("%d\n",10%3);//1
printf("%d\n",-10%3);//-1
printf("%d\n",-10%-3);//-1
printf("%D\n",10%-3);//1