1.操作符
1.1算数操作符
注: / 除法,得到的是商
除法操作符的两端如果都是整数,执行的是整数除法,只要有一个浮点数则执行浮点型除法
%取模,得到的是余数,%只能作用于整数
1.2位移操作符
1.3位操作符
按位与,按位异或,按位或
1.4赋值操作符
1.5单目操作符
#include <stdio.h> int main() { int flag = 3; //C语言中,0表示假,非0表示真 //flag为真打印hehe if (flag) { printf("hehe\n"); } //flag 为假,打印haha if (!flag) { printf("haha\n"); } return 0; }
后置--,先使用,再--,前置--,先--,再使用
后置++,先使用,再++,前置++,先++,再使用
#include <stdio.h> int main() { int a = 10; int b = a--;//后置--,先使用,再-- printf("a=%d b=%d\n", a, b);//9 10 return 0 }
强制类型转换:()里放想要转换的类型
1.6关系操作符
1.7逻辑操作符
逻辑与:并且,操作符两边全部满足条件
逻辑或:或者,操作符两边有一个满足条件即可
1.8条件操作符(三目操作符)
exp1 ? exp2: exp3
如果exp1为真,则exp2为整个表达式的结果;如果exp1为假,则exp3为整个表达式的结果
#include <stdio.h> int main() { int a = 3; int b = 5; int m = 0; scanf("%d %d", &a, &b); m = (a > b ? a : b);//条件操作符/三目操作符 printf("%d\n", m); return 0; }
1.9逗号表达式
exp1, exp2, exp3, …expN
逗号表达式的特点:表达式从左向右依次计算,但是整个表达式的结果是最后一个表达式的结果。
1.10下标引用、函数调用和结构成员
[] () . ->
arr [4] 中[ ]为下标访问操作符,arr和4是[ ]这个操作符的操作数
Add(a,b)中( )为函数调用操作符,Add,a,b为( )这个操作符的操作数
2.常见关键字
C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。
return -函数中返回值
2.1关键字typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名。
例如:
//将unsigned int 重命名为uint, 所以uint也是一个类型名 typedef unsigned int uint; int main() { //观察num1和num2,这两个变量的类型是一样的 unsigned int num1 = 0; uint num2 = 0; return 0; }
2.2关键字static
在 C 语言中:
static 是用来修饰变量和函数的
1. 修饰局部变量 - 称为静态局部变量
2. 修饰全局变量 - 称为静态全局变量
3. 修饰函数 - 称为静态函数
2.2.1 修饰局部变量
//代码1 #include <stdio.h> void test() { int i = 0; i++; printf("%d ", i); } int main() { int i = 0; for(i=0; i<10; i++) { test(); } return 0; } //结果为1 1 1 1 1 1 1 1 1 1 //代码2 #include <stdio.h> void test() { //static修饰局部变量 static int i = 0; i++; printf("%d ", i); } int main() { int i = 0; for(i=0; i<10; i++) { test(); } return 0; } //结果为1 2 3 4 5 6 7 8 9 10
对比代码1和代码2的效果理解static修饰局部变量的意义。
结论:
一个普通的局部变量是放在栈区的,而被static的修饰的局部变量,是放在内存的静态区的
存储位置发生了变化,使得局部变量出了作用域不会销毁,影响了变量的生命周期
作用域不受影响
2.2.2修饰全局变量
结论:
static修饰全局变量这时全局变量的外部链接属性就变成了内部链接属性,只能在自己所在的.c文件内部使用,其他.c文件无法使用,影响了变量的作用域。
2.2.3修饰函数
结论:
函数是具有外部链接属性的,static 修饰函数 后,函数的外部链接属性就变成了内部链接属性,被static修饰的函数只能在自己所在的.c文件内使用,其他.c文件无法使用,最终相当于影响了作用域