操作符详解

操作符详解:

首先贴一张自己制作的思维导图

在这里插入图片描述
移位操作符:(箭头指向哪边向哪边移)
<< :左移操作符
作用:将保存的数据二进制位(补码)向左移动
具体用法:左边抛弃,右边补零。
.>>:右移操作符
作用:将保存的数据二进制位(补码)向右移动
具体用法:右移操作符分为算数移位和逻辑移位
算数移位:右边抛弃,左边补原来的符号位(计算机采用算数移位);
逻辑移位:右边抛弃,左边直接补零,不考虑符号位。
注意:1.对一个数移位操作完成后,当前的数字不会改变,除非把它赋给另一个变量。
2.移位操作不能移负数位。

int main()
{
	int i = 10;
	int num = 0;
	int value = 0;

	num = i >> 1;
	value = i << 1;

	printf("%d\n", num);
	printf("%d\n", value);
	printf("%d\n", i);

	system("pause");
	return 0;


}

输出结果:5 ;20; 10
左移操作符相当于给之前的数乘2n(n为移动n位);
右移操作符相当于给之前数除2n;

位操作符:
&:按位与
|:按位或
^:按位异或
注意:1.位操作符的作用对象也是一个数的补码,并且操作数必须为整数,浮点数的存储方式与整数不同。
方法:针对存储数据补码
'&'同1为1,否则为0;
‘|’同0为0,否则为1;
‘^’相同为0,相异为1;
单目操作符:
单目操作符的种类在思维导图中已经列出,这里讲几个需要特别注意的。

  1. ’!‘逻辑取反,任何非零的数逻辑取反都为0;c语言中规定0为假;其他的非零数均为真。
  2. sizeof是操作符并不是函数,sizeof计算变量所占空间字节大小,若sizeof计算字符串的大小包含’\0‘,而strlen(函数)计算字符串长度不包含’\0’。sizeof(a+b)里面的表达式不参与计算,若a,b都是int类型,输出结果将是4;这说明sizeof计算大小在编译期进行。
  3. sizeof若在主函数内求数组大小,即:sizeof(arr)是计算整个数组的大小,而sizeof在函数中计算sizeof(arr)输出为4(32位系统);因为函数名经函数传参降为了指针,此时arr为数组首元素地址。
  4. 前置++,后置++
    如:a++是先使用再加加;先执行语句直到遇到’;‘再自加。
    ++a是先加加再使用。
    减减同理
int main()
{
	int i = 2;
	int a = 0;
	int b = 0;

	a = ++i;
	b = i++;

	printf("%d %d", a, b);


	system("pause");
	return 0;
}

输出结果为3,3
a是将i自加后赋值给a;
b是将i的值赋给b后,i再进行自加;

关系操作符:
关系操作符种类已在思维导图中列出,这里需要特别注意的是,不要将赋值操作符‘=’和判断相等(==)搞混

逻辑操作符:
&&:逻辑与
||:逻辑或
不同于按位与和按位或。

条件操作符:
exp1?exp2:exp3
用法:exp1为真,结果输出exp2,否则输出exp3.

逗号表达式:
exp1,exp2,…,expN
用法:从左到右依次执行,整个表达式的结果是最后一表达式的结果

int main()
{
	int i = 0; 
	int j = 1;
	int m = 10;
	int n = (i > j, j = i, i = j - 1, m);

	printf("%d ", n);


	system("pause");
	return 0;
}

输出结果为10;

下标引用,函数调用和结构成员:
[ ]:数组下表引用操作符,操作数:数组名+索引值
():函数调用操作符,操作数:函数名和函数参数
.:访问结构体成员; ->:同样也是结构体访问操作符与‘.’不同的是->是和指针配合使用的。

若有问题希望能够指出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值