嵌入式开发笔记—关于>>和<<、&和&&和指针

1、>>和<<

符号>>可以理解为除以2的几次方,例如a>>b相当于a除以2^b。相反,符号<<可以理解为乘2的几次方。

上面描述的只是它们的数字意义。

实际上>>为右移运算符,其运算规则为“符号位不变,左边补上符号位”,具体来说就是按照二进制的形式把所有数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,正数补0,负数补1。

<<为左移运算符,其运算规则为按照二进制的形式把所有数字向左移动对应的位数,低位补0。

2、&和&&

&:按位与,都为1时结果为1,否则结果为0。例如1011 & 1010 = 1110。
&&:逻辑与,a&&b,只有当a和b均为true时结果为true,否则结果为false。

3、指针赋值

指针是一种指向变量地址的变量,既可以指向一个普通变量,也可以指向结构体变量。
对指针进行赋值时,等号右边既可以是a,也可以是a。当等号右边是a时,则指向的是该地址所存放的数据。当等号右边是a时,则指向的是该地址。

#include<stdio.h>

int main()
{
    int i = 8;
    
    int* j = &i;   // j指向i的地址
    int* k = (int*)i;   // k等于变量i的值

    // 也可以写成如下形式
    // int* j;
    // int* k;
    // j = &i;
    // k = (int*)i;
    
	printf("j=%d\n",j);
	printf("\n");
	printf("k=%d\n",k);
	printf("\n");
	printf("&i=%d\n",&i);
	
	return 0;
}

运行结果如下:

运行结果
指针的类型决定了指针±整数时的步长

int* i = 0;   // 定义一个空指针i

上面定义了一个指针变量i,*(i + 1)实际上并非加1,因为i为int类型,所以加1实际上为加32。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二土电子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值