操作符
- 算术操作符
- 移位操作符
- 位操作符
- 赋值操作符(=)
- 复合赋值操作符
- 单目操作符
- 关系操作符
- 逻辑操作符
- 逗号表达式
- 条件操作符
- 下标引用,函数调用和结构成员
今天给大家带来一篇关于C语言操作符的详细介绍,在C语言中操作符主要有以下几种:
1.算术操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.单目操作符
6.关系操作符
7.逻辑操作符
8.逗号表达式
9.条件操作符
9.下标引用,函数调用和结构成员
接下来给大家详细介绍!
算术操作符
+ - * / %
其中加法和减法和数学中的一样,乘法在C语言中是*表示的,剩下的也和数学中是一样的。
在C语言中除法分为整数除法和小数除法,整数除法/两遍都得是整数,而小数除法/两边只要有一个小数就可以了。列如:
#include <stdio.h>
int main()
{
printf("%d\n", 2 / 3);
printf("%lf\n", 2 / 3.0);
printf("%lf\n", 2.0 / 3.0);
printf("%lf\n", 2.0 / 3);
return 0;
}
代码运行结果:
还有一个%取余操作符,就是求余数,这个操作符需要注意的事,符号两边都必须是整数,不可以是浮点数!
移位操作符
<< 左移操作符
>> 右移操作符
移位操作符操作的是我们的二进制位,所以在这里给大家补充一个知识点,原码、反码、补码。
对于一个有符号的整数来说,二进制为的最高位为符号位。
正数的原码、反码、补码都相同。
负数的原码就是按二进制的形式写出来就行。反码就是符号位不变,剩下的按位取反,补码就等于反码加1。
左移操作符就是所有的二进制位向左移动,左边的丢弃,右边补0。
右移运算分为两种:
- 逻辑移位 左边用0填充,右边丢弃
- 算术移位 左边用原该值的符号位填充,右边丢弃
代码演示
#include <stdio.h>
int main()
{
printf("%d\n", 5 >> 1);
printf("%d\n", 5 << 1);
return 0;
}
代码运行结果:
对于移位运算符,不要移动负数位,这个是标准未定义的。
位操作符
& 按位与
| 按位或
^ 按位异或
位操作符操作的也是二进制位。
&操作符,两个数二进制位对应的都是1才是1,只要有0就是0。
| 操作符,两个数二进制位对应的都是0才是0,只要有1就是1。
^操作符,两个数二进制位相同为0,相异为1。
代码演示:
#include <stdio.h>
int main()
{
printf("%d\n", 1 & 2);
printf("%d\n", 1 | 2);
printf("%d\n", 1 ^ 2);
printf("%d\n", 1 ^ 2 ^ 1);
printf("%d\n", 1 ^ 1 ^ 2);
return 0;
}
运行结果
从运行结果我们也可以看出,^操作符满足交换律。
赋值操作符(=)
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。
复合赋值操作符
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
这些运算符都可以写成复合的效果。
例如a+=b就等价于a=a+b。
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
– 前置、后置–
++ 前置、后置++*
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
sizeof(数组名)计算的是整个数组所占空间的大小
这里重点讲一下前置++和后置++,–跟它同理。
前置++,变量先加1在使用。
后置++,先使用变量的值,在加1。
解引用操作符可以拿到指针指向的那个内容。
关系操作符
>
>=
<
<=
!= 用于测试“不相等”== 用于测试“相等
这些关系运算符比较简单,没什么可讲的。
逻辑操作符
&& 逻辑与
|| 逻辑或
&&两边都为真才为真,否则为假,如果左边为假,右边就不进行运算了。
|| 两边都为假才为假,都则为真,如果左边为真,右边就不进行运算了。
逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,会从左向右依次计算,最后一个表达式的值为最终表达式的值。
代码演示
#include <stdio.h>
int main()
{
int num = 0;
num = (3 + 2, 2 + 4, 5 + 5);
printf("%d\n", num);
return 0;
}
运行结果
条件操作符
exp1 ? exp2 : exp3
这个操作符,如果exp1为真,就运算exp2为最终结果,否则exp3为最终结果。
比如我们求两个数最大值:
max = (a > b ? a : b);
下标引用,函数调用和结构成员
1.[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值
2.( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员
. 结构体.成员名。
-> 结构体指针->成员名。
今天的分享就到这里结束了,感谢大家的关注和支持。