操作符详细

1, 左移(<<),右移(>>)

1.1,左移 <<

原码,反码,补码
符号位为第一位
在内存中表示的时补码
反码 = 原码除了符号位以外取反
补码 = 原码除了符号位以外取反在+1
一个正数的原码,反码,补码都一样。
如:10
原码:00000000 00000000 00000000 00001010
反码:00000000 00000000 00000000 00001010
补码:00000000 00000000 00000000 00001010
负数
反码 = 原码符号位不变其余取反
补码 = 反码+1
如:-10
原码:00000000 00000000 00000000 00001010
反码:11111111 11111111 11111111 11110101
补码:11111111 11111111 11111111 11110110

在这里插入图片描述

在这里插入图片描述

1.2,右移 >>

1,算术右移(较多):右边丢弃,左边补原来的符号位
2,逻辑右移 :右边丢弃,左边补0

在这里插入图片描述

2,按位与(&),按位或(|),按位异或(^)

2.1,按位与(&)

对应的二进制位有0则为0,同时为1才为1

在这里插入图片描述
在这里插入图片描述

2.2按位或(|)

对应的二进制位有1则为1,都为0才为0

在这里插入图片描述
在这里插入图片描述

2.3 按位异或(^)

对应的二进制位相同为0,相异为1
在这里插入图片描述
在这里插入图片描述

3,后置++(–),前置++(–)

3.1后置++(先使用,后++)

在这里插入图片描述

在这里插入图片描述

3.2前置++(先++,在使用)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
答案:c(先使用,后++)

4,逻辑与(&&),逻辑或(||)

4.1逻辑与(&&)

int main()
{
    int i = 0, a = 0, b = 2, c = 3, d = 4;
    i = a++ && ++b && d++;
    printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
    return 0;
}

4.2逻辑或(||)

int main()
{
    int i = 0, a = 1, b = 2, c = 3, d = 4;
    i = a++||++b||d++;
    printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
    return 0;
}

5,条件操作符(exp1 ? exp2 : exp3)

int main()
{
	int a = 1;
	int b = 3;
	int c = (a > b ? a : b);
	printf("%d\n", c);
	return 0;
}

6,逗号表达式(exp1,exp2,exp3,…expN)

逗号表达式,左到右依次执行,表达式的结果是最后一个表达式
在这里插入图片描述

7,隐式类型转换

为了获得精度,表达式中的字符和短整型操作数在使用前转换为普通整型,转换成为整型提升
负数的整型提升:高位补1
正数的整型提升:高位补0
在这里插入图片描述

8,算术转换

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阔步昂首

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值