这段时间系统的学习了一下操作符,现将自己总结的知识点和大家做个分享。
首先,操作符由算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员组成。一些基本的大家都清楚,我就不一一做介绍了,下面是我认为需要注意的几个方面:
1.%操作符的两个操作数必须为整数,其他的算术操作符可以作用于整数和浮点数。
2. << 左移操作符;移位规则:左边丢弃右边补0;
>> 右移操作符;右移运算分为两种:逻辑右移——左边补0,右边丢弃
算术右移——左边补符号位,右边丢弃
移位位数不能为负,例如:a<<-2,是错误的。
3.!取反操作符
#include<stdio.h>
{
int flag = 2;
printf("%d",!flag);
return 0;
}
这里输出的结果为0,因为是逻辑取反。
4.1)sizeof求操作数的类型长度,以字节为单位,注意:sizeof不是函数
sizeof(a)可以写成sizeof a,这里a为一个变量;但是求类型长度时,必须写成sizeof(int)。一般建议写成sizeof().
2)sizeof和&后跟数组名的区别:
sizeof(数组名),数组名表示整个数组,表达式求的是整个数组的大小,单位是字节;
&数组名,数组名表示整个数组,表示求的是整个数组的地址;
除上述两种情况外,所有的数组名都是首元素的地址。
5.分清楚 逻辑与( &&)和按位与(&)以及逻辑或(||)和按位或(|)的区别
1 & 2,结果为 0;
1&& 2,结果为 1;
1 | 2,结果为 3;
1 || 2,结果为1.
6.逗号表达式,从左到右依次执行,整个表达式结果为最后一个表达式结果
int a = 1;
int b = 2;
int c = (a > b,a = b + 10,a,b = a +1);
c = 13, a>b为假,执行第二条语句,a=b+10, a=12,执行最后一条语句,b=a+1,b=13,所以c = b,所以c = 13
7.a++和a-- 先对a使用,再进行自加或自减;
++a和--a 先对a进行自加或自减,再使用。
上面是我的一些总结,如果有错,欢迎指正。