c语言的操作符大概分为以下几类:
1.算数操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.单目操作符
6.关系操作符
7.逻辑操作符
8.条件操作符
9.逗号表达式
一、首先 我们先来看看算术操作符:
算数操作符有:+ - *(乘) /(除) &(取余运算)
注意:
1.除了%操作符以外,其他的操作符都可以作用于整数和浮点数。
2.对于/操作符,如果两个操作符都为整数,执行整数除法。如果有浮点数就执行的是浮点数除法。
3.%操作符的两个操作数必须为整数。返回的是整除后的余数(取余数运算)。
二、我们再来看看移位操作符。
移位操作符分为:1.左移操作符 2.右移操作符
左移操作符的移位规则:左边抛弃、右边取0
右移操作符的移位规则:首先右移运算分为两种:1.逻辑移位(左边用0填充,右边丢弃) 2.算数移位(左边用原该值的符号位填充,右边丢弃)。
注意:移位操作在num没有被赋值的情况下,自身的值是不会改变的。
三、位操作符。
位操作符有:& //按位与(全"1"为"1") | //按位或(有"1"为"1") ^ //按位异或(相同为"0" 不同为"1")
另外,我们要注意一个细节:两个相同的数进行异或的时候就会清0(就是等于0);
任何数和0异或就是它本身
练习题:不创建临时变量(即第三个变量)来实现两个数的交换
代码:
#include<stdio.h>
int main()
{
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
return 0;
}
这样我们通过按位异或的方式就能实现在不创建第三变量的条件下,交换两个数的内容。
四、赋值操作符
在赋值操作符里,我们只需要搞清楚两个东西。什么是初始化,什么是赋值。
初始化:是指在定义的时候赋初值。例如:int a=10;
赋 值:是在定义后赋值。例如:a=10;
二者是不一样的。
另外,我们还有一些复合赋值符:
+= -= *= /= %= >>= <<= &= |= =
具体怎么用呢,我们举个例子:
int x=10;
x=x+10;
这里我们就可以写成x+=10
五、单目操作符
单目操作符有哪些呢?我们来看看: !(逻辑反操作) -(负值) +(正值) &(取地址) sizeof(操作数的类型长度(以字节为单位)) ~(对一个数的二进制按位取反) --(前置、后置--) ++(前置、后置++) *(间接访问操作符) (类型)(强制转换类型)
六、关系操作符
我们常用的关系操作符有: >、<=、<、<=、!=(用于测试“不相等”) ==(用于测试“相等”)
这些关系运算都比较简单,但我们要注意一点:
比如:
x=get_value();
if(x=5) 这里我们要把if(x=5)写成if(5==x)
有时候我们一不注意就会把等于写成了赋值,所以用上边的写法就会降低我们的出错率。
七、逻辑操作符
逻辑操作符有 &&(逻辑与)和||(逻辑或)
我们在这里要区分逻辑与和按位与 逻辑或和按位或 举个例子:
1& 2--------->0 1&&2---------->1
1|2------------>3 1||2------------->1
八、条件操作符
这里我们主要说一种写法叫:三目运算符(exp1?exp2:exp3)
例如: if(a>5)
b=3;
else
b=-3;
写成三目运算符就是: a>5?3:-3
九、逗号表达式
exp1,exp2,exp3,...expN
逗号表达式,就是用逗号分隔开的多个表达式;
逗号表达式是从左往右依次执行的;
注意: 整个表达式的结果都是最后一个表达式的结果。例如:
int a=1;
int b=2;
int c=(a>b,a=b+10,a,b=a+1);
这里的c是多少? 因为逗号表达式的结果都是最后一个表达式的结果 所以我们不难得出这里的c就是13。
到这里,基本就是我们c语言里常用的操作符了,给大家总结一下,有哪里不好也请大家多多指正!