C语言操作符
C语言操作符分类:
算数操作符移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
算数操作符:+-*/%
移位操作符:<<左移操作符 >>右移操作符
其中左移操作符为左移抛弃右边补零。右移操作符分为
逻辑右移:左边补零右边抛弃
算数右移:左边补符号位,右边抛弃
移位操作符不能移动负数位如
{int num = 10;
num>>-1;//这个是错误的}
位操作符:&按位与
|按位或
^按位异或
赋值操作符:=
复合赋值操作符:+=先相加再赋值
-=先相减再赋值
*=先相乘再赋值
/=先相除再赋值
%=先取余再赋值类似的还有>>=、<<=、&=、|=
单目操作符:!逻辑取反
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~二进制按位取反
--前置、后置--
++前置、后置++
*间接访问操作符、
(类型)强制类型转换
#include<stdio.h>
void text1(int arr[])
{
printf("%d",sizeof(arr));//结果为4
}
void text2(char ch[])
{
printf("%d",sizeof(ch));//结果为4
}
关系操作符:
>
>=
<
<=
!=
==
逻辑操作符:
&&逻辑与
||逻辑或
1&2按位与》》》0
1&&2逻辑与》》》1
1|2》》》3按位或
1||2》》》1逻辑或
条件操作符:exp1?exp2:exp3是否满足条件1如果满足则执行操作2否则执行操作3
逗号表达式:用于隔开多个表达式
下标引用、函数引用和结构体:
1下标引用[]
2函数调用操作符()
3访问结构体的成员:.结构体.成员名
->结构体指针->成员名
#include<stdio.h>
struct Stu{
char name[10];
int age;
char sex[5];
};
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;
}
表达式求值
算数转换:如果某个操作符的各个操作数属于不同类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作
就无法进行。
操作符的属性:操作符的优先级、操作符的结合性、是否控制求职顺序。