操作符分类:
- 算数操作符
- 移位操作符
- 位操作符
- 赋值操作符
- 单目操作符
- 关系操作符
- 逻辑操作符
- 条件操作符
- 逗号表达式
- 下标引用、函数调用和结构成员
各类操作符介绍
算术操作符:+ - * / %
- “ + ”的使用:
- “ - ” 的使用:
- “ * ” 的使用:
- “ / ” 的使用:
(使用“/” 操作符的俩个操作数都为整数,则执行整数除法;而只要有浮点数执行的就是浮点数除法。)
- %的使用:
(“%”操作符的俩个操作数必须都是整数。返回值是整除之后的余数。)
移位操作符:
(移二进制序列)
-
" << "左移操作符:
将二进制序列左移,每左移一次,二进制序列的左边丢失一个符号位(0 或1),右边补0. -
" >> "右移操作符
右移操作符分为俩种:
1.逻辑移位: 左边用0填充,右边丢弃。
2.算数移位:左边用原该值的符号位填充,右边丢弃。
警告:
对于移位操作符,不要移动负数位,这个是标准内没有定义的。
例如:
int num = 10;
num >> -1;//error
位操作符
(操作数必须为整数) -
“ & ” //按位与
-
“ | ” //按位或
-
“ ^ ” // 按位异或
赋值操作符
“=”
例如:
int a = 8;(赋值)
int weight = 94;
a = y =1;(连续赋值)
复合操作符
+=
-+
*=
/=
%=
>>=
<<=
&=
|=
^=
单目操作符
! :逻辑反操作
- :负值
+:正值
& :取地址
sizeof:操作数的类型长度(以字节为单位)
~:第一个数的二进制按位取反
–:前置、后置–
++:前置、后置++
* :间接访问操作符(解引用操作符)
(类型): 强制类型转换
逻辑操作符
&& : 逻辑与
|| :逻辑或
(0 为假,非0 都为真)
1 && 2 —>3
1|| 2 —>1
条件操作符
exp1 ? exp2: exp3
例如:
if(a>5) b= 3; else b= -3;
改为条件操作符:
a>5?b = 3;b= -3;
逗号表达式:
exp1,exp2,exp3,…expN
(逗号表达式就是用逗号隔开的多个表达式。)
逗号表达式整个表达式的结果为最后一个表达式的结果。
例如:
int a = 1;
int b =2;
int c =(a>b,a=b+10,a,b= a+1);
c 的结果为13.
下标引用、函数调用和结构成员
1.[ ] 下标引用操作符
操作数:一个数组名+一个索引值
例如:
int arr[10];//创建数组
arr[9]= 10;//使用下标引用操作符
[ ]的俩个操作数是arr和9.
2.()函数调用操作符:接受一个或者多个操作数。
(第一个操作数是函数名,剩余操作数就是传递给函数的参数)
例如:
#include <stdio.h>
void test 1()
{
printf("123\n");
}
void
test 2(conat char * str)
{
printf("%s\n",str);
}
int main ()
{
test 1();
test 2 ("hello");
return 0;
}
3.访问一个结构的成员
.结构体.成员名
->结构体指针->成员名
int mian()
{
struct stu stu;
struct stu* pstu=&stu;//结构体成员访问(指向结构体变量)
set_age1(stu);
patu->age =20;;//结构体成员访问(指向结构体指针)
set_age2(pstu);
return 0;
}