操作符是我们平时编程敲代码所必不可少,必须要用的

今天这里对操作符作小小的总结


大体上,操作符分为以下几种——


1.算数操作符

加+  减-   乘*   除/   取余%

1. 这里 除了  取余% 之外,其余都可以作用于 整数和浮点数(小数)

2. 对于 除/ 需要注意,只要有浮点数执行的就是浮点数除法

3.取余% 的两个操作数必须是整数。返回的是整除之后的余数


2.移位操作符

左移操作符<<       右移操作符>>

需要注意的是:这里的左移右移是在数字的二进制代码下进行的!

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

右移运算分两种:
1. 逻辑移位 左边用0填充,右边丢弃
2. 算术移位 左边用原该值的符号位填充,右边丢弃   (算术移位应该是最合理的!


3.位操作符

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

例:

#include <stdio.h>
int main()
{
	int num1 = 1;
	int num2 = 2;
	int ret = 0;
	ret = (num1 & num2, num1 | num2, num1 ^ num2);
	printf("ret= %d\n", ret);
	return 0;
}

输出结果:ret=3


4.赋值操作符

=          赋值操作符可以连续使用!  

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值

例:

int weight = 120;//体重
weight = 89;//不满意就赋值
double salary = 10000.0;
salary = 20000.0;//使用赋值操作符赋值

暨:随用随赋值

除此之外,还有一些复合赋值符

+=     -=     *=     /=     %=     >>=     <<=     &=     |=     ^=


5.单目操作符

逻辑反操作
- 负值

+

正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置减减--
++ 前置、后置加加++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换

关于sizeof——

sizeof功能是用来求变量(类型)所占空间的大小

例:

#include<stdio.h>

void test1(int arr[])
{
	printf("%d\n", sizeof(arr));//(2) 传的是首元素的地址,应存放到一个指针变量,占4个字节
}
void test2(char ch[])
{
	printf("%d\n", sizeof(ch));//(4)  传的是首元素的地址,应存放到一个指针变量,占4个字节
}
int main()
{
	int arr[10] = { 0 };
	char ch[10] = { 0 };
	printf("%d\n", sizeof(arr));//(1)  打印这个整形数组总空间的大小:4*10=40
	printf("%d\n", sizeof(ch));//(3)   打印char这个数组总空间的大小:1*10=10
	test1(arr);  //进行数组传参
	test2(ch);
	return 0;
}

输出结果:40   10    4    4 


6.关系操作符

大于>    大于等于>=    小于<    小于等于<=     不等于 !=(用于测试“不相等”)      等于 ==(用于测试“相等”)

注意:== 和 = 的区别


7.逻辑操作符

&& 逻辑与       || 逻辑或

注意   逻辑与 和 按位与、逻辑或 和 按位或 的区别

例:

1&2----->0
1&&2---->1
1|2----->3
1||2---->1

例:

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	//i = a++||++b||d++;
	printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
	return 0;
}

程序输出结果:

第一次 :a=1 b=2 c=3 d=4  因为是 逻辑与 的关系,所以当a是a++(暨先操作再自+1),此时a=0后面不执行,所以只有a自加1,其余变量原值不变

第二次:a=1 b=3 c=3 d=4   因为是 逻辑或 的关系,所以当运行到++b(先自+1再运算),b已变成1,而对于或运算,只要有一个1,后面的就不用再计算,所以a,b自加1,c,d 原值不变。


7.条件操作符

exp1 ? exp2 : exp3   暨判断exp1,执行exp2或者exp3

例:

if (a > 5)
    b = 3;
else
    b = -3;

如用条件操作符写:

a > 5 ? b = 3 : b = -3 ;

或者

b = a > 5 ? 3 : -3;

显然,下面的写法更简洁高效。


8.逗号表达式

exp1, exp2, exp3, ...expN      

逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

例:

int a = 1;
int b = 2;
int c =(a>b, a=b+10, a, b=a+1);

程序输出的结果c=13


9.下标引用操作符、函数调用和结构成员

[] 下标引用操作符      ()函数调用操作符