C语言各类操作符全面讲解
1 算术操作符 - * / %,-和*操作数我就不多说了这里我们重点来 / 和%/操作数作用就是求商注意点1 二边的操作数都是整形商的结果就为整数2 二边的操作数有一个是浮点型结果就为小数%操作数作用求余数注意点. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。2 移位操作符 左移操作符 右移操作符注意移位操作符移的是二进制位且操作数只能是整数 左移操作符规则左边抛弃、右边补0代码举例1234567891011121314151617#includestdio.hintmain(){inta -5;//正数的原码反码和补码都相同//这是负数的规则//10000000000000000000000000000101原码//11111111111111111111111111111010反码原码的符号位不变其他位按位取反//11111111111111111111111111111011补码反码1就是补码intb a 1;//11111111111111111111111111110110补码//11111111111111111111111111110101反码//10000000000000000000000000001010原码printf(a %d\n, a);printf(b %d\n, b);return0;}当a1时当a2时当a3时总结1 操作数被移位操作符操作后其值仍然不变2 计算机存储的都是补码而打印出来的是原码所对应的值3 ban时b的值位a*2^n,也就是说当我们左移1位时相当与乘了个2倍 右移操作符移位规则 首先右移运算分两种1. 逻辑移位 左边用0填充右边丢弃2. 算术移位 左边用原该值的符号位填充右边丢弃代码举例12345678910#define _CRT_SECURE_NO_WARNINGS#includestdio.hintmain(){inta -64;intb a 1;printf(a %d\n, a);printf(b %d\n, b);return0;}当a1时当a2时当a3时总结1 右移操作和左移操作是本质都是对补码的二进制位进行操作2 ban时b的值位a/2^n,也就是说当我们左移1位时相当与除了个2倍注意对于移位运算符不要移动负数位这个是标准未定义的。3 位操作符 //按位与| //按位或^ //按位异或注他们的操作数必须是整数。我们这些位操作符都是针对操作数的补码进行操作的操作符作用对于二进制数都为0才为0都为1才为1代码举例12345678910111213141516171819#includestdio.hintmain(){inta 5;//00000000000000000000000000000101 5的补码intb -3;//10000000000000000000000000000011 3的原码//11111111111111111111111111111100 3的反码//11111111111111111111111111111101 3的补码intc a b;//00000000000000000000000000000101 5的补码//11111111111111111111111111111101 3的补码// 的作用是二进制数都为0才为0都为1才为1//00000000000000000000000000000101 c的补码printf(a %d\n, a);printf(b %d\n, b);printf(c %d\n, c);return0;}|按位或作用二进制位中有一个为1就为1^按位异或作用二进制位中相异置1相同为置0大家知道这些操作符的作用了我们来做到题目来实战一下吧。题目1不能创建临时变量第三个变量实现两个数的交换