运算符集锦

目录

算数运算符

关系运算符

逻辑运算符 

位运算符 

赋值运算符

 条件运算符

逗号运算符 

指针运算符  

强制类型转换运算符 

下标运算符 


        运算符主要包括:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,条件运算符,逗号运算符,指针运算符,强制类型转换运算符,下标运算以及其他运算符。

1.算数运算符

      算数运算符包括:正号运算符(+),负号运算符(-),乘法运算符(*) ,除法运算符(/),

求余运算符(%),加法运算符(+),减法运算符(-),自增运算符(++i,i++),自减运算符(--i,i--)。

注:1.%运算符要求参加的运算对象(即操作数)为整数,结果也为整数。如8%3,结果为2。

       2.除%以外的操作数都可以是任何算数类型。

       3.++i,--i,在使用之前,先将i的值加(减)1。

       4.i++,i--,在使用之后,使i的值加(减)1。

       5.判断i增加还是减少以本条语句后的分号(;)为依据。

2.关系运算符

       关系运算符也叫比较运算符 ,常用来比较和判断两个常量或变量的大小。关系运算符对应的是二元运算,运算结果常用为boolean型。

       关系运算符的值为false或true对应着数字中的0或1。关系运算符只有成立与不成立的逻辑关系。

C提供的关系运算符有:> , >= , < , <= , !=(不等于) , ==(判断两边是否相等,结果为0或1) 

3.逻辑运算符 

       逻辑运算符有三种:and、or、not(三者都是关键字),也就是与、或、非。

x and y  # 当x和y均为True时,此逻辑表达式为True,否则为False
x or y  # 当x和y之中至少有1个为True时,表达式结果位True,否则为False
not x  # 当x为True时,表达式结果为False;当x为False时,表达式结果为True

 注:逻辑运算符常与比较运算符一起使用

4.位运算符 

       位运算符分为位逻辑运算符和位移运算符 。

位逻辑运算符:

运算符含义举例       规则
&a & b任何二进制位和0进行&运算,结果都是0;和1进行&运算结果都是原值
|a|b任何二进制位和0进行|运算,结果都是原值;和1进行|运算结果都是1
~取反~a0为1,1为0
^异或a^b相同为0,相异为1

 位移运算符:

运算符含义举例规则
<<左移位a << 2空位补0,被移除的高位丢弃
>>右移位a >> 2被移位的二进制最高位为0,右移后,空缺位补0;最高位为1,空缺位补1
>>>无符号右移位a >>> 2被移位二进制最高位无论是0还是1,空缺位都用0补

5.赋值运算符

        赋值运算符的优先级低于算术运算符,结合方向是自右向左;它表示即将其右侧的值送到左侧的变量中(左侧只允许是变量,不能是表达式或其他形式);不要将赋值运算符与相等运算符“==”混淆。

运算符含义举例结果
+=将该运算符左边的数值加上右边的数值, 其结果赋值给左边变量本身int a=5; a+=2;a=7
-=将该运算符左边的数值减去右边的数值, 其结果赋值给左边变量本身 int a=5; a-=2;a=3
=将该运算符左边的数值乘以右边的数值, 其结果赋值给左边变量本身int a=5; a=2;a=10
/=将该运算符左边的数值整除右边的数值, 其结果赋值给左边变量本身int a=5; a/=2;a=2
%=将该运算符左边的数值除以右边的数值后取余,其结果赋值给左边变量本身 

int a=5; a%=2;

a=1

6. 条件运算符

         为了获得两个数中比较大的数,常使用if语句,例:

if(a>b){
    max = a;
}else{
    max = b;
}

 引入条件运算符后就变得很简单

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

其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。

上面的语句就可以改为

max = (a>b) ? a : b;

注:1.条件运算符是c语言中唯一一个三目运算符

       2.条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符

       3.条件运算符?和:是一对运算符,不能分开单独使用 

       4.条件运算符的结合方向是自右至左 

7.逗号运算符 

       c语言中,逗号运算符的优先级最低 ,用它可将两个(或多个)表达式连接起来。

逗号表达式的一般形式为:

表达式1,表达式2;

      逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。

8.指针运算符  

       

名称符号

格式

含义用途
取地址运算符&&变量名取出存放变量的地址跨函数传递变量值
间接运算符**指针名/地址名取出存储在地址中的对应值

9.强制类型转换运算符 

       当我们想改变一个表达式的类型时,“强制类型转换符”就派上用场了

1.一般形式:

                (类型名)(表达式)

2.一般应用:

(int) x                                                       --将x转换成int类型
(double)(x+y)                                         --将x+y的值转换成double类型

#include<stdio.h>
int main()
{
	int a;
	float b;
	b = 2.5;
	a = (int)b;//将float型转为int型
	printf("%d\n", a);//结果为2
	return 0;
}

10.下标运算符

1. 定义一个数组:int a[5] = {5,6,7,8,9};
由于数组的名字就是数组的首地址,[ ] 下标运算符里面是偏移量,则 a[0+1]是指数组的首地址向右移动一位,代表指向6这个元素。
前面也讲过 * +空间地址 == 该元素名字,即* &b== b。所以 *a == &a,则 *(a+1)== a[1]== 6。

2.对于指针:
int *p =a;      / / 指针指向数组的首元素,即 p == &a。
*(p+4)== p[4] == 4[p];       / / 同数组一样

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小劉要努力~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值