作者 : @Y_X01
专栏 : C语言从无到有
✨放低姿态,空杯心态✨
文章目录
- 1.算术操作符
- 2.移位操作符
- 3.位操作符
- 4.赋值操作符
- 5.单目操作符
- 6.关系操作符
+ - * / %
+、-、*、/这四个运算符均可用于整数及浮点数的运算。
当使用/运算符时,如果两个操作数均为整型,那么执行整数除法,运算结果也为整型;如果两个操作数至少一个为浮点数,那么执行浮点数运算,运算结果 为浮点型。
%运算符只能用于两个整数相除,返回余数。
2.移位操作符<< 左移操作符
>> 右移操作符
注:移位操作符的操作数只能是整数,一个整数在内存中存储的是补码,一位操作针对的是补码
1.左移操作: 左边抛弃、右边补0(相当于左移一位,乘以2)
实际上,a在没赋值的情况下,自身的值不会发生变化
2.右移操作
算术右移 (右边丢弃,左边补原来的符号位数)
逻辑右移 (右边丢弃,左边不用考虑符号位数,直接用0补充)
到底是 算术右移还是 逻辑右移,取决于编译器,我们常见的编译器大多都是算术右移
3.位操作符对于移位运算符还需要注意的一点是:不要移动负位数,这是标准未定义的,c语言并没有规定负移位数该怎么做,所以不能写成负数
& //按位与
| //按位或
^ //按位异或
注:他们的操作数必须是整数
& ----同时1则为1,否则为0
| -----有1则1,否则为0
^ —相同为0,相异为1
例题一 : 不能创建临时变量实现两个数的交换
#include4.赋值操作符int main() { int a = 5; int b = 3; printf("交换前:a=%d b=%dn", a, b); //3^ 3 = 0 //011^ 011 = 000 //0 ^ 5 = 5 //000^ 101 = 101 //3 ^ 5^ 3 =5 a = a ^ b; //3^5 b = a ^ b; //3^ 5 ^ 3 = 5 a = a ^ b; //3^ 5^ 5 = 3 printf("交换后:a=%d b=%dn", a, b); return 0; }
=
复合类型
5.单目操作符+= a = a+ 1
-= a= a- 1
*= …
/= …
%=
>>=
<<=
&=
|=
^=
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)~ 对一个数的二进制按位取反
– 前置、后置–
++ 前置、后置++
* 间接访问操作符(解引用操作符)
- !
//C语言中0表示假,非零表示真
int flag = 0;
//当flag为假的时候打印haha
if (!flag) //只需用上逻辑反操作符 ! 就能打印了
{
printf("hahan");
}
- &
int a= 2;
printf("%p",&a); //取出a的地址
3 . sizeof
int a = 10;
printf("%dn", sizeof(a)); //计算a所占内存空间的大小为4个字节
printf("%dn", sizeof(int)); //计算int类型为4个字节
int arr[5] = { 1,2,3,4,5};
printf("%dn", sizeof(arr)); // 数组名arr单独放在sizeof代表的是整个数组,
//因为arr数组是int型且里面有5个元素,
//int型大小是4个字节,所以总大小为20个字节
- ~
int a=0;
printf("%dn",~a);
// 0000 0000 0000 0000 0000 0000 0000 0000 -因为0是正数,原反补相同
// 1111 1111 1111 1111 1111 1111 1111 1111 - 把0的补码每一位进行取反
//又因为要打印出来,得把补码转换成原码
// 1111 1111 1111 1111 1111 1111 1111 1111 - 补码
// 1111 1111 1111 1111 1111 1111 1111 1110 - 反码
// 1000 0000 0000 0000 0000 0000 0000 0001 - 原码
// 打印出来的结果为 -1
5 – + +
#includeint main() { int a = 10; int m =++a;//先加后赋值 int n =--a;//先减后赋值 int x = a++;//先赋值后加 int y = a--;//先赋值后减 return 0; }
- *解引用操作符
int a=10;
int *p=&a;
*p=20; // p是指针变量存的是a的地址,*p 解引用操作符通过p存放的地址找到a,并重新给a赋值成20;
printf("%dn",a); // 因此a最终的结果为20
6.关系操作符
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 用来测试“不相等”
== 用来测试“相等”
注意:
1.判断字符串是否相同应该用strcmp()函数,而不能用=比较
2..编写程序代码时一定注意=和==区别,不要写错,=是做赋值操作,而==才是判断是否相等
预告:【C语言入门】—操作符(下)



