操作符总结

一、操作符分类

1、算数操作符

2、移位操作符

3、位操作符

4、赋值操作符

5、单目操作符

6、关系操作符

7、逻辑操作符

8、条件操作符

9、逗号表达式

10、下标引用、函数调用和结构成员

二、操作符具体功能

(一)算数操作符

+  - * / %

%操作符只能用整数,其他的操作符都可以作⽤于整数和浮点数。

(二)移位操作符

1、左移和右移 <<>>

左移:左边抛弃、右边补零

2、右移有两种:

(1)逻辑移位

右边丢弃,左边补零

(2)算术移位

右边丢弃,左边补原符号位

不移动负数位,

(三)位操作符

& 按位与
| 按位或
^ 按位异或
注意!!!他们的操作数必须是整数!!!

(四)赋值操作符

例如 A = 3赋值运算尽量不要连续赋值尽量分开赋值

复合赋值符
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
=

这些运算符都可以写成复合的效果。

⽐如:

int x=10;

x = x+10;
x+=10;使用复合赋值这样写更加简洁。

(五)单⽬操作符

! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对⼀个数的⼆进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引⽤操作符)

(类型) 强制类型转换

例子:一个怪诞的程序

int main()
{

	int i=0;
	int ret = (++i) + (++i) + (++i);
	printf("%d\n",ret);
	printf("%d\n",i);
	return 0;
}

// 输出结构:

Linux  : 10  4

VS2008 : 12  4


(六)关系操作符

>
>=
<
<=
!= ”
== 

!有些运算符陷阱if(x = 6),并非判断等于而是赋值

(七)逻辑操作符

&& 逻辑与
|| 逻辑或

&&遇到0 后面的不再做运算

||遇到1后面的不再做运算

区分逻辑与和按位与
区分逻辑或和按位或
1&2----->0
1&&2---->1
1|2----->3
1||2---->1


(八)条件表达式

表达式1 ? 表达式2 : 表达式3

为真 表达式2  为假 表达式3

(九)逗号表达式

表达式1,表达式2,表达式3,表达式4,…,表达式N

从前往后运算,最后一个结果为逗号表达式的最终结果
(十)下标引⽤、函数调⽤和结构成员

1、下标引用符  数组名[索引值]

2、函数调用操作符  函数名(传递给被调用函数的实参)

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;
}

猜你喜欢

转载自blog.csdn.net/qq_39478237/article/details/80230385