C语言学习(详细版)五:操作符

算术操作符

符号含义
+
-
*
/
%取余
  • 除了“%”之外,其他操作符可以作用于整数和浮点数。
  • 对于“/”操作符,如果两个操作数都为整数,执行整数除法,而只要有浮点数就执行浮点数除法。
  • “%”返回的是整除之后的余数。

移位操作符

符号含义
<<左移
>>右移
&按位与
|按位或
^按位异或
  • 右移操作符
    – 算术右移:右边丢弃,左边补原符号位。
    – 逻辑右移:右边丢弃,左边补0。
  • 左移操作符:左边丢弃,右边补0。
  • 位操作符:操作数必须是整数。

练习:求一个整数存储在内存中的二进制中的1的个数。

#include <stdio.h>


int main()
{
	int num =10;
	int count =0;
	int i =0;
	scanf("%d",&num);
	for(i=0;i<32;i++)
	{
		if(1 == ((num >> i) & 1))
			count++;
	}
	printf("二进制中1的个数=%d\n",count);
	return 0;
}

赋值操作符

复合赋值符
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

单目操作符

符号含义
!逻辑反操作
-赋值
+正值
&取地址
sizeof操作数的类型长度
~按位取反
前置、后置–
++前置、后置++
*解引用操作符
(类型)强制类型转换

关系操作符

符号含义
>大于
>=大于等于
<小于
<=小于等于
!=不相等
==相等

逻辑操作符

符号含义
&&逻辑与
||逻辑或

练习

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

条件操作符

exp1?exp2:exp3

逗号表达式

exp1,exp2,exp3,...,expm

用逗号隔开的多个表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果。

下标引用操作符[]

操作数:数组名+索引值

int arr[10];
arr[9] = 10;

函数调用操作符()

操作数:函数名+函数参数

结构成员操作符

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

表达式运算

整型提升

  • 表达式中的字符和短整型操作数在使用前被转换为普通整型的过程称为整型提升。
    在这里插入图片描述

示例

//c参与表达式运算,+c和!c都会发生整型提升
int main()
{
	char c=1;
	printf("%u\n",sizeof(c));//1
	printf("%u\n",sizeof(+c));//4
	printf("%u\n",sizeof(!c));//4
	return 0;
}

算术转换

  • 寻常算术转换
long double
double
float
unsigned long int
long int
unsigned int
int
  • 操作符属性
    – 操作符的优先级;
    – 操作符的结合性;
    – 是否控制求值顺序。
  • 函数的调用先后顺序无法通过操作符的优先级确定。
  • 表达式的书写需要通过操作符的属性确定唯一的计算路径,否则计算结果会出现问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值