九、操作符
1、算数操作符:+、-、*、/、%(加减乘除取模运算)
“/”两端都是整数时,执行整数除法(结果也为整数)例:3/2 = 1
“/”两端都是小数时,执行小数除法(结果也为小数)例:3/2.0 = 1.5
2、移位操作符:<<、>>(左移操作符、右移操作符)
移位操作符,移动的是二进制位。
例 :a = 2,a << 1---------------> a = 4
3、位操作符:&(按位与)、|(按位或)、^(按位异或)
这三个符号操作的对象是数的二进制位进行与、或、异或操作
4、赋值操作符(=、+=、-=、/=、*=)
例:a = 5; a += 5(也可写作a = a+5)
5、单目操作符:只有一个操作数的操作符
!:逻辑反操作
-:负数操作符
sizeof:计算字节长度
例:int arr[10] = {0}; sizeof(arr) = ? //结果为40(一个整型变量字节长度为4,10个就是40)
6、关系操作符:>、<、>=、<=、!=、==
其中“==”要与“=”操作符区别,一个是关系操作符,用来判断是否相等;一个是赋值操作符。
7、前置、后置操作符:++ 、--
以++操作符的使用为例
“++”放在变量之前,则变量先加1,后使用;反之,先使用,后变量加1。
int a = 5;
int b = ++a;
printf("%d",a); //输出结果为6
printf("%d",b); //输出结果为6
8、逻辑操作符:&&(逻辑与)、||(逻辑或)
&&:符号两边条件表达式同时为真,则整个式子为真。
||:符号两边条件表达式有一个为真,则整个式子为真。
例:int a = 6,b = 5 则(a>5 && b<3)为假,(a>5 || b<3)为真。
9、条件操作符(也称三目操作符)
exp1?exp2:exp3
此表达式的意义是:若exp1成立,执行exp2,否则执行exp3。
例:max = a>b ? a : b(寻找两数之间的较大数)。
10、逗号表达式:exp1,exp2,exp3.......
顾名思义,就是一串由逗号隔开的表达式
从左向右每个表达式都要计算,但是输出的值是最后一个表达式的结果。
//例题:
int a = 5;
int b = 3;
int c = 1;
int d = (a = b+2,c = a-4,b = c+2)
printf("%d",d);//输出结果为3
11、下标引用、函数调用和结构成员
[]:下标引用操作符,常用来访问数组成员
():函数调用操作符
.:结构体成员变量的访问符号
十、关键字
【定义】 关键字是C语言中有着特殊意义的字符,关键字由C语言提供,不可以自己创建。
注意:变量名的创建不能使用关键字
部分关键字:
auto//定义自动变量
typedef//类型重命名
case、char、const、continue、default、enum
extern//用来声明外部符号
void、union、while、static等。
注意:include、define都不是C语言的关键字
对static关键字的介绍:
static a.静态的
用法:
1)修饰局部变量,改变了局部变量的生命周期,可以使得局部变量在局部范围使用完后而“不死”,本质是改变了变量的存储类型。
2)修饰全局变量,使得全局变量只能在自己的源文件(.c文件)内部使用,同工程下的其他源文件不可使用。
3)修饰函数,使得函数只能在自己的源文件内部使用,不能在其他源文件内部使用。
补充内容:C语言的内存划分
十一、指针
【定义】首先我们要知道,内存是被划分成了多个内存单元的。每个内存单元都有编号,这些编号就称为内存单元的地址,也称为指针。
1、指针变量的定义 :类型 * 变量名 = 地址
#include<stdio.h>
int main()
{
int a = 10;//a是整型变量,在内存中要分配要四个字节大小的空间
//&a 是用来取a的地址的,实际上取到的是a分配内存单元第一个单元的地址
printf("%p", &a);//"%p"是专门用来打印地址的
int* pa = &a; //pa用来存放地址,是一个整型的指针变量
return 0;
}
2、 指针变量的作用:利用解引用符*,我们可以通过指针变量来操作变量。例:
int main()
{
int a = 10;
int* pa = &a;
*pa = 20;
printf("%d", a);
return 0;
}
以上代码输出的结果为:20。
这是因为*pa就是找到了指针指向的变量a,因此可以直接对a操作。
(指针就是地址)
3、指针变量的大小
指针变量的大小与计算机的位数有关,与指针变量的类型无关。
例:sizeof(char *); //其结果为4
结论:指针变量大小在32位计算机上都是4个字节,在64位计算机上都是8个字节。
原因:指针变量大小与地址的存储相关。
十二、结构体
1、我们可以使用结构体创建新的类型出来。
结构体使得C语言有能力描述复杂类型。
例:描述一个学生:姓名+年龄+性别。
先创建一个学生的类型
struct Stu
{
char name[10];
int age;
char sex[4];
};
其中name、age、sex都是Stu这个类型的成员变量
2、结构体变量的初始化
int main()
{
struct Stu s = { "张三",20,"男" };
printf("%s %d %s", s.name, s.age, s.sex);
return 0;
}
输出结果