C语言操作符和整形提升

常见的加减乘除赋值都是操作符,与计算有关的都是操作符。

如:

单目操作符

! 逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度
~对一个数的二进制按位取反
--有前置和后置
++如上

类似这种操作符还有很多,其中比较重要的有:

&按位与,|按位或,^按位异或操作符

&按位与:

	int a = 3;
	int b = 5;
	int c = a & b;
	printf("%d", c);//c = 1;
//该操作符是通过二进制补码来计算,同1则新值(c)为1,其余都为0;
//…………000000011+…………00000101  得  …………000000001

|按位或:

	int a = 3;
	int b = 5;
	int c = a | b;
	printf("%d", c);//c = 7
//其中按位或是其二进制补码有1则1,无1则0,然后在返回求原码

^按位异或:

	int a = 3;
	int b = 5;
	int c = a ^ b;
	printf("%d", c);//6
//按位异或,相同为0,相异为1

//相同的整数异或值为0,0与任何数异或都是本身

其中异或可以是一种状态,如3异或5值为3^5。

赋值操作符:

	int a = 3;
	int b = 5;
	int c = 0;
	int d = a = b = a + b;
	printf("%d %d %d %d", a, b, c, d);//8 8 0 8
//这是从右到左的计算方式,依次赋值

移位标识符:

	int a = 3;
	int b = 3;
	b = b >> 1;//这是b的二进制向后移动一位 就是除2
	a = a << 1;//a的二进制向前移动一位 就是乘2
	printf("%d %d", a,b);// 6   1
    1<<4;//1*(2^4)

~的用法:

	int a = 3;
	a = ~a;
	printf("%d", a);//-4
//~就是二进制取反

逻辑操作符:

	int a = 0;
	int b = -2;
	int c = a && b;
	printf("%d", c);//只会输出1和0都为正输出1,有一个假输出为0,只有a或者b为0才输出0


整形提升的目的是为了获取精度,一般常用于char提升为int

例子:

首先a = 00000101 b = 11001000

相加c = 11001101

但是要用整形输出,char需要整形提升为int,提升后11111111 11111111 11111111 11001101

注意,这是补码,然后求原码10000000 0000000 0000000 00110011

输出为-51

注意这里:里面补位是根据符号位,符号位是0就补0,是1就补1

  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值