C语言:操作符&表达式求值

对于位操作符都是对整数的补码操作

1.算术操作符

+,-,*,/,%

/取整运算符,只要有一个数是浮点数就执行浮点数计算
%取余运算符,两数必须是整数

取模操作符不能用于double类型

2.移位操作符,整数

<<,>>,作用于一个数的二进制位,必须是整数,移位时是补码进行移位
右移一位等于除2
左移一位等于乘2

向右移位分为算术移位和逻辑移位(取决于编译器)

  • 算术右移:右边丢弃,补符号位(大多数编译器)
  • 逻辑右移:右边丢弃,补0

左移补0,右移补符号位

移正数位如上
移负数位右移-28位,32位平台下,-28+32=4<=>右移四位
移位超过32位左移35位,32位平台下,35%32=3<=>左移三位
左移
int a=3;
//00000000 00000000 00000000 00000011
int b=a<<1;
//00000000 00000000 00000000 00000110
//b=6

3.位操作符,整数

一定要是补码进行位运算操作
在这里插入图片描述

int a = 3;//0000 0011
int b = 5;//0000 0101

int c1=a&b//0000 0001,c1=1

int c2=a|b//0000 0111,c2=7

int c3=a^b//0000 0110,c3=6

异或:相 异 为 1
应用:不创建临时变量交换两个值

a^a=0

4.赋值操作符 =

下列均是复合操作符
在这里插入图片描述

复合操作符使用方法,其余操作符同理
a += 10;
a = a+10;//用复合操作符可以写成  

左值:一般是一块空间
右值:一般是一个值或者是一块空间的内容

5.单目操作符

  • 单目的意思是只有一个操作数,双目同理,有两个操作数,例:
  • a+b,ab是两个操作数,所以+是双目操作符;
  • ++a,只有a一个操作数,所以++是单目操作符。
-负值
+正值
&取地址
sizeof计算变量所占空间大小,单位字节
~对一个二进制数按位取反
- -前置,后置
++前置(先使用,后++ ),后置++(先++,后使用)
*解引用

printf("%d %d %d\n,i++,++i,i++")函数打印值时,
为了保证值从左往右输出,就要将参数从右往左进行压栈。
在压栈的过程中,计算机会对数据进行计算或处理

取反操作符使用
在这里插入图片描述


sizeof使用
在这里插入图片描述

强制类型转换

括号里放的类型
int n=(int)3.14;

6.关系操作符

=
<
<=
!=
==

7.逻辑操作符

只关注真假

&& ---- 逻辑与,左操作数为假,右边不计算

  • 1&&2=1

|| ------ 逻辑或,左操作数为真,右边不计算

在这里插入图片描述
在这里插入图片描述

8.条件操作符

exp1 ? exp2 : exp3
1为真,则表达式结果2,否则表达式结果是3

等价于a > b ? a : b
a>b是否成立?成立值是a,不成立值是b

9.逗号表达式

exp1, exp2, exp3, …expN
从左向右依次执行,整个表达式结果是最后一个表达式的结果
用于循环 while( 条件1, 条件2, 条件3 ),只要最后一个条件正确,while括号内的条件也是真

在这里插入图片描述

10.下标引用、函数调用

int arr[10],arr的类型是int [10]
[ ]操作符的两个操作数是arr和10

( )的操作数是函数参数和函数名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值