????write in front????
????大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流????
????2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜92﹣总榜886⇿全网访问量35w+????
????本文由 謓泽 原创 发布在51CTOP 如需转载还请通知⚠
????个人主页-謓泽51Ctop的博客????
????欢迎各位→点赞???? + 收藏⭐️ + 留言????
????系列专栏-謓泽51Ctop的分类_51CTO博客????
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本????
????算术运算符
???? 加法运算符("+")
- 又称之为 双目运算符,即应该有两个变量参加运算,具有右结合性。描述:把两个操作数相加。
#include<stdio.h> int main(void){ printf("Arabic numerals = %d",1+1); return 0; }
运行结果:Arabic numerals = 2
???? 减法运算符("-")
- 又称之为 双目运算符,但"-"也可作负值运算符,此时为单目运算符。描述:从第一个操作数中减去第二个操作数。
#include<stdio.h> int main(void){ printf("Arabic numerals = %d",1-1); return 0; }
运行结果:Arabic numerals = 0
???? 乘法运算符("*")
- 又称之为 双目运算符,具有左结合性。描述:把两个操作数相乘。
#include<stdio.h> int main(void){ printf("Arabic numerals = %d\n",2 * 2); return 0; }
注意:数学上的是乘法(x),而在我们编程当中是星号(*)。
运行结果:Arabic numerals = 4
???? 除法运算符("/")
- 又称之为 双目运算符,具有左结合性。参与运算量均为整型时,结果也为整型,舍 去小数。如果运算量中有一个是实型,则结果为双精度实型。描述:分子除以分母。
注意:数学上的是除法(÷),而在我们编程当中的是斜杠(/)。
下面用代码演示下:除法演示
#define #include <stdio.h> int main(void){ int a = 10; int a1 = 10; int b = 3; float b1 = 3.0; int c = a / b; float c1 = a / b1; printf("Take integer = %d\n", c); printf("Take decimal = %lf\n",c1); return 0; }
上述????代码编译运行结果:
???? 取模运算符("%")
- 描述:分子除以分母,例如:8%3 = 2
注意:取模操作符是只能对整数进行取模的,而不能对小数进行取模运算。
取模运算符练习:算出 100~200 当中能被 2 除以的数字打印出来,并且用 count 计次打印出来的总数。代码示例显示如下:
#include <stdio.h> int main(void){ int i; int Count = 0; for (i = 100; i <= 200; i++) { if (i % 2 == 0) { printf("%d ", i); Count++; } } printf("\nCount = %d\n", Count); return 0; }
上述????代码编译运行结果:
????移位操作符
- 二进制左移运算符("<<"),将一个运算对象的各二进制位全部左移若干位 (左边的二进制位丢弃,右边补0)
- 注:高位丢弃,低位补0。
- 二进制右移运算符(">>"),将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。算数右移补的是最高位的数字,逻辑右移补的都是0。注意:我们通常都是采用的是算数右移的方式!
- 注:低位丢弃,高位补0『正数补0、负数补1』
<<(左移):最高位丢弃,最低位补0 >>(右移)如下↓ 1.无符号数(unsigned):最低位丢弃,最高位补0 2.有符号数(signed):最低位丢弃,最高位补符号位.(★) 注:取决于数据类型
例如 A = 2,A<<1,得到的数字是:4
- 00000000000000000000000000000010
- 00000000000000000000000000000100
例如 A = 2,A>>1,得到的数字是:1
- 00000000000000000000000000000010
- 00000000000000000000000000000001
注意:在按位移动的时候,我们要移动正常的位数,你可不能移动100位那就出大问题
⚠:对于移位运算符,不要移动负数位,这个是标准当中未定义的。
- 例如
int num = 2; num << -5; //错误
????位操作符
???? 按位与运算符("&")
- 双目运算符。其功能是参与运算的两数各对应的二进位相与,只有对应的两个二进位均为 1 时,结果位才为 1,否则为 0。参与运算的数以补码方式出现。
运算规则
例如:9 & 5,代码如下所示:
- 运行结果:number = 1
???? 按位或运算符("|")
- 双目运算符。其功能是参与运算的两数各对应的二进位相或。只要 对应的二个二进位有一个为 1 时,结果位就为 1。参与运算的两个数均以补码出现。
运算规则
例如:9 & 5,代码如下所示:
- 运行结果: number = 1
???? 按位异或运算符("^")
- 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。
- 相同为0,一个数字异或上了0就相当于本身的那个数字。
运算规则
例如:将 a = 9 和 b = 5 的值进行交换,不能创建变量进行交换!代码如下所示:
从上面代码我们可以知道,按位异或(^),可以不用创建临时变量达到交换两个数字的值。
- 运行结果:交换之前:a = 9 b = 5 换行a = 5 b = 9
- 注:位操作符都必须是整数!