一、算数操作符
+ - * / %
1、除了%操作符之外,其他的几个操作符可以用于整数和浮点数。
2、对于/操作符如果两个操作数都为整数,执⾏行行整数除法。⽽而只要有浮点数执⾏行行的就是浮点数除法。
3、%是求模运算符,两个操作数都必须为整数。返回整出后的余数。
二、移位操作符
<< 左移操作符。移位规则:左边丢弃,右边补0。
>> 右移操作符。移位规则:1、逻辑移位:右边丢弃,左边补0。
2、算术移位:右边丢弃,左边用原符号位填充。
注意:不能移动负数位,这个是未定义的。
三、位操作符
& 按位与
| 按位或
^ 按位异或
注意:操作数必须是整数。
不创建临时变量,实现两个数的交换。
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}
四、赋值操作符
赋值操作符,用一个 = 表示。它可以让你得到一个之前不满意的值。即可以给变量重新赋一个新值。
复合赋值符。
五、单⽬目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(单位是字节)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转化
六、关系操作符
>
<
<=
>=
!=
==
七、逻辑操作符
&& 逻辑与
| | 逻辑或
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
八、条件操作符
exp1 ? exp2 : exp3 先判断exp1是否成立,若成立则执行exp2,否则执行exp3。
九、逗号表达式
就是用逗号隔开的多个表达式。从左至右依次执行。整个表达式的结果是最后一个表达式的结果。
十、下标引用、函数调用和结构成员
1、[ ]
操作数:一个数组名 + 一个索引值
int arr[10];// 创建数组
arr[9] = 10;// 实⽤用下标引⽤用操作符。
[ ]的两个操作数是arr和9。
2、( )
函数调用操作数
#include <stdio.h>
void test1()
{
printf("hehe\n");
}
void test2(const char *str)
{
printf("%s\n", str);
}
int main()
{
test1(); // 实⽤用()作为函数调⽤用操作符。
test2("hello bit.");// 实⽤用()作为函数调⽤用操作符。
return 0;
}
3、访问一个结构体的成员
. 结构体 . 成员名
#include <stdio.h>
struct Stu
{
char name[10];
int age;
char sex[5];
double score;
};
void set_age1(struct Stu stu)
{
stu.age = 18;
}
void set_age2(struct Stu* pStu)
{
pStu->age = 18;// 结构成员访问
}
int main()
{
struct Stu stu;
struct Stu* pStu = &stu;// 结构成员访问
stu.age = 20;// 结构成员访问
set_age1(stu);
pStu->age = 20;// 结构成员访问
set_age2(pStu);
return 0;
}