C语言操作符总结

1.算术操作符

符号:+  -  *  / %
注释:
   + :用于整数和浮点数的加法
   - :用于整数和浮点数的减法
   * :用于整数和浮点数的乘法
   / :用于整数和浮点数的除法
   % :用于两整数相处取余数
注意:
  1.除了%操作符之外,其他的几个操作符可以用于整数和浮点数。
  2.对于/操作符如果两个操作符都为整数,执行整数除法,而只要有浮点数执行的就是浮点数除法。
  3.%操作符的两个操作数必须是整数,返回的是整除后的余数。

2.移位操作符

符号:<<  >>
注释:
   << :左移位操作符
   >> :右移位操作符
注意:移位操作符的操作数只能是整数

2.1左移操作符

移位规则:
    左边抛弃,右边补0,相当于*2
在这里插入图片描述

2.2右移操作符

移位规则:
    右移操作符分两种:
        1.逻辑移位
          左边用0填充,右边丢弃
        1.算术移位
          左边用原该值的符号位补充(第一位0表示正数,1表示负数),右边丢弃,编译器中通常是算术移位,有除以2的效果
补充:数据的存储
数据在内存中是以2进制的形式储存的,对于整数而言,整数的二进制有3种表示形式:原码,反码,补码。
  正整数:原码,反码,补码相同
  负整数:原码,反码,补码不同,要进行计算。负整数在内存中存储的是二进制的补码,打印的是这个数的原码。
1.按照数值直接写出的是二进制的原码
2.原码的符号位不变,其他位按位取反,就得到了反码
3.反码+1就是补码
例:-10的原码:1000 0000 0000 0000 0000 0000 0000 1010
        1111 1111 1111 1111 1111 1111 1111 0101–>-10的反码(符号位不变,其余位全部按位取反)
        1111 1111 1111 1111 1111 1111 1111 0110–>补码(反码+1就是补码)
在这里插入图片描述

3.位操作符

符号:&  |   ^
注释:
   & :按位与 :二进制位与二进制位 (有一个为假,则为假)
   | :按位或:二进制位与二进制位 (有一个为真,则为真)
   ^ :按位异或:对应的二进制位相同,则为0 。对应的二进制位相异,则为1。
注:他们的操作必须是整数
例1:
在这里插入图片描述
注:num1:0000 0000 0000 0000 0000 0000 0000 0010
 num2:0000 0000 0000 0000 0000 0000 0000 0001
 num1 & num2:0000 0000 0000 0000 0000 0000 0000 0000—>十进制表示:0
 num1 | num2:0000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:3
 num1 ^ num2:0000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:3(相同为0,相异为1)
例2:
在这里插入图片描述
注:num1 的原码:1000 0000 0000 0000 0000 0000 0000 0011
  num1的反码:1111 1111 1111 1111 1111 1111 1111 1100
  num1的补码:1111 1111 1111 1111 1111 1111 1111 1101
  num2的原码:1000 0000 0000 0000 0000 0000 0000 0001
  num2的反码:1111 1111 1111 1111 1111 1111 1111 1110
  num2的补码:1111 1111 1111 1111 1111 1111 1111 1111
num1 & num2(补码):1111 1111 1111 1111 1111 1111 1111 1101
num1 & num2(反码):1111 1111 1111 1111 1111 1111 1111 1100
num1 & num2(原码):1000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:-3

4.赋值操作符

符号:简单赋值符: = 
  复合赋值符:+=  -=  *= /=   %=  >>=   <<=   &=   |=  ^=

int a = 1;
	a = 2;//简单赋值操作
double b = 3.0;
	b = 10.0 //简单赋值
int a = 5;
	a = a + 5;
	a += 5;//复合赋值符
int b = 3;
	b = b - 1;
	b -= 1//复合赋值符

5.单目操作符

5.1单目操作符介绍

符号:
   ! --------逻辑取反
   -   --------负值
   +  --------正值
   &  --------取地址
   sizeof --------操作数的类型长度
   ~ --------对一个二进制按位取反
   - -  --------前置,后置- -
   ++  --------前置,后置++
   *  --------解引用操作符
  &(取地址):

int a = 1;
int *pa = &a;//将变量a的地址保存在变量pa中,
			//pa指向a,此时pa是一个指针变量

   - -(前置,后置),++(前置,后置):

int a = 1;
int b = a++ // a = 2; b = 1 后置++:先使用,后++
int d = 2
int c = ++d// d = 3;c = 3 前置++:先++,后使用

  *(解引用):

在这里插入图片描述

5.2sizeof和数组

  sizeof(求操作数类型长度):

int a = 1;
printf("%d\n",sizeof(a));//result:4(字节)
printf("%d\n",sizeof(int));//result:4(字节)
printf("%d\n",sizeof a);//result:4(字节)
printf("%d\n",sizeof int);//错误:求类型的长度不能去掉括号

sizeof:求变量(类型)所占空间的大小
在这里插入图片描述

6.关系操作符

符号:>  >=  <  <=   !=   ==
注意:1.编写程序代码时一定要注意 = 和== 的区别,不要写错,= 是赋值操作,而 == 才是判断
  2.判断字符串是否相同时,应该用strcmp()函数,而不能用==比较

7.逻辑操作符

符号:&& ||
  && ------------逻辑与操作(只要有一个表达式为假便为假,不再执行后面的表达式)
  | | ------------逻辑或操作(只要有一个表达式为真便为真,不再执行后面的表达式)
区分逻辑与和按位与
区分逻辑或和按位或

1 && 2 = 1//逻辑与,两个全真结果才为真
1 & 2 = 0;//按位与(按二进制计算)

1 || 2 = 1//逻辑或,只要有一个为真便为真
1 | 2 = 3//按位或(按二进制计算)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值