C语言——操作符小结

C语言——操作符小结

在C语言中操作符分为算数操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员访问。

首先我们介绍的是算数操作符。

算数操作符分为“ +,-,*,/,% ”,其中%运算的对象只能是整数,其他的操作符可作用于整数和浮点数。
对于“ / ”操作和“ * ”操作来说,如果它的接收值你希望是一个float型的,那么你的算术式中必须要出现浮点型的数据,如果这些浮点型数据都是常量的话系统还会将结果自动转化为double类型,这时我们只能对结果进行强制转换。

	float a = 0;
	a = 8/ 5.0;
	printf("%f\n", a);
	return 0;

编译时会发出warning:
在这里插入图片描述

如果表达式中的数据都是int类型,则返回值是int类型

float a = 0;
a = 8/ 5;
printf("%f\n", a);
return 0;

a是浮点型没错,我们以为a会是1.8,可是结果却是这样:
在这里插入图片描述
在我们日常操作中这些可都是坑啊。

移位操作符

移位操作符只有右移位“>>”和左移位“<<”这两个操作符,使用起来也非常简单方便。
右移位是对该数字的2进制码向右移动,向右移动几位左边便补几个0,右移位相当于对当前数字做除法运算;
左移位是对该数字的2进制码向左移动,向左移动几位右边便补几个0,左移位相当于对当前数字做乘法运算。

	int  a = 3;
	int  b = 4;
	a >>=1;
	b <<= 1;
	printf("a=%d\n", a);
	printf("b=%d\n", b);

在这里插入图片描述
移位操作符的作用对象只能是整型,不能是浮点型。
在这里插入图片描述

位操作符

位操作符有
& —— 按位与
| —— 按位或
^ —— 按位异或
位操作符的对象也必须为整数
在这里插入图片描述
关于“&”和“|”相信大家都很熟悉了,对于异或有这么一个操作可以不使用temp就交换两个数的值

	int   a = 3;
	int  b = 4;
	a ^= b;
	b ^= a;
	a ^= b;

我们来看一下结果:
在这里插入图片描述

赋值操作符

赋值操作符有这些:

+=    -=   *=    /=   %=  >>=   <<=   &=   |=   ^=

赋值操作符的用法我们都不陌生,就简单介绍就好了。

单目操作符

什么是单目操作符呢?
单目操作符是指运算所需变量为一个的运算符,即在运算当中只有一个操作数,又叫一元运算符。
单目操作符有这么几个

	 !        逻辑反操作 
	 -        负值 
	 +        正值 
	 &        取地址 
	 sizeof   操作数的类型长度(以字节为单位) 
	 ~        对一个数的二进制按位取反 
	 --       前置、后置 -- 
	 ++       前置、后置++ 
	 *        间接访问操作符(解引用操作符)
	(类型)   强制转换 

说说sizeof吧,sizeof通常用来求某个类型变量的长度,但是它也可以求一个数组的数组长度(以字节为单位)如:

	int arr[10] = { 0 };
	printf("%d\n",sizeof(arr));

结果当然是40,不相信你可以自己去验证。

关系操作符

       > 
	   >=
	   <
	   <= 
	   !=	用于测试“不相等”
	   ==	用于测试“相等”

关系操作符我们从小学到大应该不用说了吧,只是要注意不要把判断相等“ == ”写成了赋值“ = ”

逻辑操作符、条件操作符、逗号表达式

逻辑操作符

	   &&   逻辑与
	   ||   逻辑或

条件操作符

exp1 ? exp2 : exp3

条件操作符就是传说中的三目运算符,当exp1成立时执行exp2,exp1不成立就执行exp3。

逗号表达式

	   exp1, exp2, exp3, …expN

逗号表达式我经常在创建变量和使用循环的时候会使用,其他地方使用次数很少

		   int a = 0, b = 0, c = 0;
		   for (i = 0, j = 1; i < 15; i++, j++)

下标引用、函数调用和结构成员访问

下标引用
[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值
exp:

  int arr[10];//创建数组    
  arr[9] = 10;//实用下标引用操作符。  
  [ ]的两个操作数是arr和9。

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

exp:

#include<stdio.h>
void exp1()
{
	printf("HelloWorld");
}
void exp2(int x, int y)
{
	printf("%d\n", x + y);
}
int main()
{

	exp1(); //实用()作为函数调用操作符
	exp2(1, 2);
	return 0;
}

结构成员访问

1、 . 结构体 . 成员名
2、->结构体指针->结构体指针

exp:

#include<stdio.h>
struct Student{
	char name[100];
	int  age;
	char sex[100];
};
int main()
{
	struct Student stu;
	struct Student *p;
	stu.age = 18;
	p->age = 20;
	return 0;
}

最后总结一下需要注意的地方:

%运算的操作对象只能是int型数据
移位运算符、位运算符的操作对象只能是int型数据
在判断相等时要使用 == 而不是赋值符号 =

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值