C语言 运算符

1.运算符

1.1算术运算符

运算符

功能说明

举例

+

加法,一目取正

a+b

-

减法,一目取负

a-b

*

乘法

a*b

/

除法

a/b

%

取模(求余)

a%b

++

自加1

a++, ++b

--

自减1

a--, --b

  • 前缀自加自减运算:先进行自加自减,再参与表达式运算
  • 后缀自加自减运算:先参与表达式运算,再进行自加自减
int a = 100;
int b = 200;

int c = ++a; // a先自加1,变成101;然后再赋值给c,因此c等于101
int d = b++; // b先赋值给d,因此d等于200;然后b自加1,变成201

1.2关系运算符

运算符

功能说明

举例

功能说明

>

大于

a > b

判断a是否大于b

>=

大于或等于

a >= 5

判断a是否大于或等于5

<

小于

3 < x

判断3是否小于x

<=

小于或等于

x <= (y+1)

判断x是否小于或等于y+1

==

等于

(x+1) == 0

判断x+1是否等于0

!=

不等于

c != ‘\0’

判断c是否不等于'\0'

1.3逻辑运算符

运算符

功能说明

举例

!

逻辑反

!(x==0)

&&

逻辑与

x>0 && x

||

逻辑或

y10

  • 逻辑反:将逻辑真、假翻转,即真变假,假变真。
  • 逻辑与:将两个关系表达式串联起来,当且仅当左右两个表达式都为真时,结果为真。理解为电路的串联。
  • 逻辑或:将两个关系表达式并联起来,当且仅当左右两个表达式都为假时,结果为假。理解为电路的并联。

 

  • 惰性运算
    • 在逻辑与运算中,如果左边表达式的值为假,那么右边表达式将不被执行。
    • 在逻辑或运算中,如果左边表达式的值为真,那么右边表达式将不被执行。

1.4位运算符

运算符

名称

举例

功能说明

~

位逻辑反

~a

将变量 a 中的每一位取反

&

位逻辑与

a & b

将变量 a 和 b 逐位进行与操作

|

位逻辑或

a | b

将变量 a 和 b 逐位进行或操作

^

位逻辑异或

a ^ b

将变量 a 和 b 逐位进行异或操作

<<

左移

a << n

将变量 a 中的每一位向左移动n位

>>

右移

a >> n

将变量 a 中的每一位向右移动n位

  •  位运算符操作的对象是数据中的每一位
  • 位逻辑反、位逻辑与、位逻辑或拥有与逻辑运算相似的规则和一样的真值表
  • 异或运算:相同为0,不同为1   
  • 移位运算:移出去的不要,空出来的补零(例外情况:如果做移位运算的操作数是一个有符号数,且做右移运算,此时移出去的不要,空出来的补原符号位)

1.5特殊运算符

  • 赋值运算符
    • 不能对常量赋值,只能对变量赋值
    • 不能直接对数组赋值
    • 可以连续赋值,顺序从右到左
int a, b;
int x[5];

a = 100; // 对变量 a 赋值,正确
3 = 100; // 对常量 3 赋值,错误!
x = 123; // 对数组 x 赋值,错误!

// 连续赋值
a = b = 50; // 先将 50 赋给 b,再将 b 的值赋给 a,正确
  • 复合赋值符
    • 除了下述10个复合运算符之外,生造别的复合运算符是非法的
    • 当左右两边有相同的操作数时,采用复合赋值符不仅直观,且能提高运算效率
// 加减乘除:
a += n; // 等价于 a = a+n;
a -= n; // 等价于 a = a-n;
a *= n; // 等价于 a = a*n;
a /= n; // 等价于 a = a/n;

// 求余:
a %= n; // 等价于 a = a%n;

// 位运算:
a &= n;  // 等价于 a = a&n;
a |= n;  // 等价于 a = a|n;
a ^= n;  // 等价于 a = a^n;
a >>= n; // 等价于 a = a>>n;
a <<= n; // 等价于 a = a<<n;
  • 条件运算符
    • 语法:表达式1 ? 表达式2 : 表达式3
    • 当表达式1为真时,取表达式2,否则取表达式3
int a = 100;
int b = 200;
int m = (a>b) ? a : b;  // 如果 a>b 为真,则 m 取 a 的值,否则取 b 的值
  • sizeof 运算符
    • 计算指定数据类型或者变量所占据内存的字节数
printf("%ld\n", sizeof(int));         // 4
printf("%ld\n", sizeof(long double)); // 16

int a[5];
printf("%ld\n", sizeof(a)); // 20
printf("%ld\n", sizeof a);  // 20
  • return运算符
    • 必须出现在函数体内,可以带函数对应类型的数据
    • 退出某个函数(如果退出的是主函数main,那么整个程序也就退出了)
  • 逗号运算符
    • 逗号运算符(优先级最低),从左往右运算
int a = 1, b = 2;

2.优先级与结合性

  • 当表达式中出现不同的运算符时,根据优先级来决定谁先执行,比如先乘除,后加减
  • 当表达式中出现多个相同优先级的运算符时,根据结合性来决定谁先运行,比如从左到右

3.表达式与语句

  • 表达式:每个表达式都有一个值

  • 语句:是c程序的基本构建块,一条语句相当于一条完整的计算机指令,在c中,大部分语句以分号结尾

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cam_______

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

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

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

打赏作者

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

抵扣说明:

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

余额充值