目录
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文件无法使用,最终相当于影响了作用域