👑个人主页:啊Q闻
🎇收录专栏:《C语言》
🎉道阻且长,行则将至
前言
操作符在程序设计中运用广泛,今天的博客将会分享操作符及其运用规则。
一.操作符的分类
操作符可以分为:
算术操作符:+ , - , * , / , %
移位操作符:<< , >>
位操作符:& , | , ^
赋值操作符:= , += , -= , *= , /= , %= , <<= , >>= , &= ,|= , ^=
单目操作符:! , ++ , -- , & , * ,+,-,~,sizeof , (类型)
关系操作符:> , >= , < , <= , == , !=
逻辑操作符:&& , ||
条件操作符:?:
逗号操作符:,
下标引用:[ ]
函数调用: ( )
结构体成员访问:. , ——>
看上去有些多,我们慢慢学习一下,掌握起来并不复杂, 有些操作符我在前面博客中已经分享过关于操作符的重点知识-优快云博客,大家感兴趣可以去看看,这篇博客主要是讲剩下的操作符。
二.移位操作符
1.初识移位操作符
移位操作符分为两种:<< 左移操作符 ,>> 右移操作符,需要注意的是:1.移位操作符的操作数只能是整数。2.对于移位运算符,不要移动负数个
2.左移操作符
移位规则:左边抛弃,右边补0
#include<stdio.h>
int main()
{
int num = 10;
int n = num << 1;
printf("n=%d\n", n);
printf("num=%d\n", num);
return 0;
}
详解 :这里需要用二进制表示:
注意:num自身的值是不会变的,因为num<<1的结果并未赋值给其他变量。
3.右移操作符
移位规则:右移运算分两种:1.逻辑右移:左边用0填充,右边丢弃 2.算术右移:左边用原该值的符号填充,右边丢弃
#include<stdio.h>
int main()
{
int num = -1;
int n = num >>1;
printf("n=%d\n", n);
printf("num=%d\n", num);
return 0;
}
详解:我用的编译器是vs,vs右移规则是算术右移:
三.位操作符
1.初识位操作符
位操作符分为:&(按位与),|(按位或),^(按位异或),~(按位取反)
注意:他们的操作数必须是整数
计算规则:
& ——只要有0则为0,两个同时为1才为1
| —— 只要有1则为1,两个同时为0才为0
^ ——相同为0,相异为1
~ ——包括符号位全部按位取反
2.位操作符详解
#include<stdio.h>
int main()
{
int num1 = -3;
int num2 = 5;
printf("%d\n", num1 & num2);
printf("%d\n", num1 | num2);
printf("%d\n", num1 ^ num2);
printf("%d\n", ~1);
return 0;
}
详解:
四.结构体成员访问操作符
1.初识结构体成员操作符
结构体成员操作符分为 . 和 ——>
2.详解结构体成员操作符
1.结构体变量 . 成员名
#include<stdio.h>
struct Point
{
int x;
int y;
}p = { 1,2 };
int main()
{
printf("x:%d,y:%d\n", p.x, p.y);//结构体变量.成员名
return 0;
}
2.结构体指针—>成员名
#include<stdio.h>
struct Point
{
int x;
int y;
}p = { 1,2 };
int main()
{
struct Point* ptr = &p;
ptr->x = 10;
ptr->y = 20;
printf("x:%d,y:%d\n", ptr->x, ptr->y);//结构体变量->成员名
return 0;
}
😊文章到这里结束哦,谢谢大家阅读,如果对你有帮助的话,给个三连吧😊