【C语言基础】运算符

运算符

运算符类型说明运算符类型说明
算术运算符+ − * / %指针运算符 * &
关系运算符> < == >= <= ! =求字节数运算符sizeof
逻辑运算符! && ||强制类型转换运算符(类型)
位运算符<< >> ^ | & ~分量运算符. →
赋值运算符= 及其扩展赋值运算符下标运算符[]
条件运算符? :其他如函数调用运算符()
逗号运算符,

算数运算符

运算符描述 结合性
+单目正从右至左
单目负从右至左
*从左至右
/除和整除从左至右
%取模(取余)从左至右
+双目加从左至右
双目减从左至右

关系运算符

运算符功能说明 示例
>大于a > b或a > 5
>=大于等于a >= b或a >= 5
<小于a < b或a < 5
<=小于等于a <= b或a <= 5
==等于a == b或a == 5
!=不等于a != b或a != 5

逻辑运算符

  • 与运算(&&):

双目运算符,只有两个运算量都是1时,运算结果才为1,左结合型

左运算量右运算量&&运算结果
000
010
100
111
  • 或运算(||):

双目运算符,只要有一个运算量为1,结果就为1,左结合型

左运算量右运算量运算结果
000
011
101
111
  • 非运算(!)

单目运算符,当运算量进行非运算,结果会取反,右结合性

运算量!运算结果
01
10

位运算符

运算符功能说明 示例
~位逻辑反~a
&位逻辑与a&b
|位逻辑或a|b
^位逻辑异或a^b
>>右移位a>>1
<<左移位b<<4
  • 非运算(~)

单目运算符,当运算量进行非运算,结果会取反

运算量~运算结果
01
10
  • 与运算符(&)
  • 双目操作符,当两个位进行相与时,只有两者都为“1”时结果才为“1”。
左运算量右运算量&运算结果
000
010
100
111
  • 或运算符(|)
  • 双目操作符,当两个位进行相或时,两者中只要有一方为“1”,结果就为“1”
左运算量右运算量运算结果
000
011
101
111
  • 异或运算符(|)
  • 双目操作符,当两个位进行异或时只要两者相同,结果就为“0”,否则结果为“1”
左运算量右运算量^运算结果
000
011
101
110
  • 位移位运算

<运算量> <运算符> <表达式>其中:

  • <运算量> 必须为整型结果数值;
  • <运算符>为左移位(<<)或 右移位(>>)运算符;
  • <表达式> 也必须为整型结果数值。

赋值运算符

运算符功能说明 示例
+=加赋值复合运算符a += b 等价于a = a + b
-=减赋值复合运算符a -= b 等价于a = a - b
*= 乘法赋值复合运算符 a *= b 等价于a = a * b
/=除法赋值复合运算符a /= b等价于a = a / b
%=求余赋值复合运算符a %= b 等价于a = a % b
&=位与赋值复合运算符a &= b 等价于a = & b
|=位或赋值复合运算符a |= b等价于a = a | b
^=位异或赋值复合运算符a ^= b等价于a = a ^ b
>>=位右移赋值复合运算符a >>= b 等价于a = a >> b
<<=位左移赋值复合运算符a <<= b 等价于a = a << b

特殊运算符

条件运算符“?:”

  • 是三目运算符,其运算的一般形式是:
  • <表达式1>?<表达式2>:<表达式3>
<表达式1>?<表达式2>:<表达式3>
关系如下:
if(表达式1)
    表达式2
else
    表达式3
#include <stdio.h>

int main(int argc, char *argv[])
{
        int x = 70, y = 10;

        //y = x++ > 70 ? x + y : 5;
        y = ++x > 70 ? x + y : 5;

        printf("x=%d y = %d\n", x, y);
        
        return 0;
}

逗号运算符“,”

float x = 10.5, y = 18, z = 0;
z = (x += 5, y = x + 0.2)
z赋值为15.7, x赋值为15.6, y赋值为15.7

z = (x = y = 5, x += 1)
z赋值为6, x赋值为6, y赋值为5

z = (x = 5, y = 6, x + y)
z赋值为11, x赋值为5, y赋值为6

z = (z = 8,x = 5, y = 3)
z赋值为3, x赋值为5, y赋值为3

sizeof操作符

  • 单目运算符,它的运算对象是变量或数据类型,运算结果为一个整数
  • sizeof(<类型或变量名>)

运算符优先级

运算符的优先级和结合性

优 先 级运 算 符"含义"运算对象个数结 合 方 向
1()圆括号自左向右
[]下标运算符
−>指向结构体成员运算符
.结构体成员运算符
2!逻辑非运算1(单目)自右向左
按位取反运算
++自增运算符
− −自减运算符
负号运算符
(类型)类型转换运算符
*指针运算符
&地址运算符
sizeof长度运算符
3*乘法运算符2(双目)自左向右
/除法运算符
%求余运算符
4+加法运算符2(双目)自左向右
减法运算符
5<<左移运算符2(双目)自左向右
>>右移运算符
6<关系运算符2(双目)自左向右
<=
>
>=
7= =等于运算符 2(双目)自左向右
!=不等于运算符
8&按位与运算符2(双目)自左向右
9^按位异或运算符2(双目)自左向右
10|按位或运算符2(双目)自左向右
11&&逻辑与运算符2(双目)自左向右
12||逻辑或运算符2(双目)自左向右
13? :条件运算符3(三目)自右向左
14=赋值运算符2(双目)自右向左
+=
−=
*=
/=
%=
>>=
<<=
&=
^=
|=
15逗号运算符自左向右
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

攻城狮晨哲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值