在C语言中,操作符分为以下几类:算术操作符,位移操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用、函数调用和结构成员。
算术操作符: + , - , * , / , %
1. 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就 是浮点数除法。
3. %操作符的两个操作数必须为整数。返回的是整除之后的余数。
移位操作符:<< 左移位 , >> 右移位
移位操作符移的是二进制位。
左移操作符移位规则:左边抛弃,右边补0。
右移运算分为两种:1.逻辑移位 左边用0补充,右边丢弃; 2.算术移位 左边用原该值得符号位填充,右边丢弃。
位操作符: & (按位与),|(按位或),^(按位异或)
举个例题:如果不能创建临时变量(第三个变量),实现两个数的交换
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
printf("a = %d b = %d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}
赋值操作符:=
int a = 10;
int x = 0;
int y = 20;
复合赋值符: +=, -=, *= , /= ,%= ,>>= , <<= ,&= , |= ,^=
单目操作符: ! (逻辑取反) , -, +, &(取地址), sizeof,~(按位取反), –,++,*,()
sizeof(数组名)——数组名表示整个数组,表达式求的是整个数组的大小,单位是字节。
&arr——数组名表示整个数组,表示求的是整个数组的地址,除此之外,所有的数组名都是首元素的地址。
关系操作符:>,>=,<,<=,!=,==
逻辑操作符:&&(逻辑与),||(逻辑或)
注意逻辑与和按位与,逻辑或和按位或的区别:
1&2—–>0
1&&2—->1
1|2—–>3
1||2—->1
#include<stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
i = a++&&++b&&d++; //1,2,3,4
//i = a++||++b||d++; //1,3,3,4
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
条件操作符:exp1 ? exp2 : exp3
if(a>5)
b=3;
else
b=-3;
转换成条件表达式,是什么样
if(a>5;b=3:b=-3)
逗号表达式:exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
下标引用、函数调用和结构成员:
1.[ ]
操作数:一个数组名+一个索引值
int arr[10];
arr [9] = 10;
[ ]arr9
2.( ) 函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数 的参数。
3.访问一个结构的成员
.结构体.成员名
->结构体指针->成员名
操作符的属性:
1.操作符的优先级;
2.操作符的结核性;
3.是否控制求值顺序。