C语言中的操作符详解

操作符和表达式

1.操作符分类:

1.1算数操作符:
 +   -   *   /	 %
  • 需要注意的是:

%操作符的两个操作数必须为整数
/ 操作符如果两个操作符都为整数,则为整数除法,如果有一个操作数为浮点数,则为浮点数除法

1.2移位操作符:

不要移动负数位,这个是标准未定义的

 << 左移操作符
 >> 右移操作符
  • 左移操作符的移位规则:

左边抛弃,右边补0

在这里插入图片描述

  • 右移操作符的移位规则:

1.逻辑移位 左边用0填充,右边丢弃
2.算术移位 左边用符号位填充,右边丢弃

1.3位操作符

注意操作数必须是整数

& 按位与
| 按位或
^ 按位异或
1.4赋值操作符
=
  • 复合操作符:+=,-=等等
1.5单目操作符
!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
1.6关系操作符
>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等”

警告: 在编程的过程中== 和=不小心写错,导致的错误

1.7逻辑操作符
&&        逻辑与
||        逻辑或

注意区分按位与,按位或

1&2----->0
1&&2---->1

1|2----->3
1||2---->1

1.8条件操作符
exp1 ? exp2 : exp3
1.9逗号表达式
exp1, exp2, exp3, …expN
int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1)
printf("%d",c);

打印结果为:13
在这里插入图片描述
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果

1.10下标引用,函数调用,结构成员
  • 下标操作引用符
int arr[10]; //创建数组
arr[9]=19; 

  • ( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数

  • 访问一个结构的成员

      结构体.成员名
      结构体指针->成员名
    

2.表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定。
同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型。

2.1隐式类型转换

C的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升

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

算数转换

下面的层次体系称为寻常算术转换:
在这里插入图片描述

操作符的属性

复杂表达式的求值有3个影响的因素
1.操作符的优先级
2.操作符的结合性
3.是否控制求值顺序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值