一、运算符的分类
C语言中的运算符号分为10类: 算术运算符 、 关系运算符 、 逻辑运算符 、 位操作 运算符、 赋值运算符 、 条件运算符 、 逗号运算符 、 指针运算符 、求字节数运算符和特殊运算符。
下面将简单介绍一下这些运算符。
二、算术运算符
说起算术运算符,就会不由想到数学里的加减乘除,既然是算数,是否会有运算顺序呢?答案是肯定的。
算是运算符主要有:+、-、*(乘)、/(除)、%(取余,即取余数)。
值得一提的是,%(取余)仅适用于整型运算,其余的可以直接作用于整型和浮点型上。
// 结果为1
printf("value1:%d\n",9%2);
// 结果为-6,先运算6*3与5/2,然后从左至右顺次进行。
int i = 10 - 6 * 3 + 5 / 2;
printf("value2:%d\n",i);
三、关系运算符
关系运算符有:>、<、==、>=、<=、!=依次为大于、小于、是否等于、大于等于、小于等于和不等于。
由关系运算符组成的表达式称为关系表达式。关系表达式的值只有真和假,对应的值为1和 0。由于 C 语言中没有布尔类型,所以在 C 语言中 0 值代表假,非 0 值即为真。
关系运算符的优先级低于算术运算符。
// 值为0,即值为假,说明先执行的4+3,再与6进行比较
printf("value3:%d\n",4+3 < 6);
需要注意的是,“==”与 “=”
我们平时所使用的“=”居多,但是在C语言这里,“=”是赋值符号。
在使用的过程中一定要注意到应该需要使用 , “==”还是“=”。
除此之外,在比较大小的过程中,我们不能使用在数学中的,诸如:a < b < c 这种重复的判断。而是要将其转换为,a < b && b < c
四、逻辑运算符
逻辑运算符:!、&& 、|| 分别为:逻辑非、逻辑与、逻辑或,这些运算符的含义与数学中的与、或、非所表达的一致。
逻辑非的优先级高于算数运算符,逻辑与 和 逻辑或的优先级低于关系运算符。
// 值为1 !运算符优先于算术运算符,而2>0,!2 即为0
int j = !2 + 1;
printf("value4:%d\n",j);
五、赋值运算符
“=”即为赋值运算符,为了弄清楚操作符,我们引入左值和右值。
左值是能够出现在赋值符号左边的东西,右值是可以出现在赋值符号右边的东西。
int a = b + 10;
a就是一个左值,b+10,这一个整体为右值。
他们是否可以进行位置互换呢?
即如:
b + 10 = a;
此时a是可以作为右值的,但是,b+10却不能作为左值,因为它未标识一个特定的位置。
六、求字节运算符
求字节运算符:sizeof,需要注意的是,sizeof在这里并不是函数,而是运算符。
// 值为4,也就是说整型变量占用的空间大小是四个字节
int m = 1;
printf("value5:%d\n",sizeof(m));