1. 首页 > 科技

*(unsigned int *)GPIOB与*(unsigned int *)(GPIOB),为什么前者报“表达式必须是可修改的左值”的错误?

*(unsigned int *)GPIOB与*(unsigned int *)(GPIOB),为什么前者报“表达式必须是可修改的左值”的错误?

c语言 指针问题 ?unsigned int * p = (unsigned int * ) 2048

unsigned int *p 表示定义变量unsigned int类型的指针变量p

(unsigned int * ) 2048 表示把2048转换为unsigned int指针类型,默认情况下2048为整型

这样一来2048就可以表示一个地址了,然后再赋值给p

#define uint unsigned int uint x,y; 此时为什么x为unsigned int型 而y为什么不是? 求大神求解

看一下uint x; uint y;可不可行,按理说如果uint没有定义过,你的这种写法是没有问题的。

unsigned int 和 int的问题

首先你要明白 unsigned 和 signed的区别,unsigned的表示范围比signed大一倍,只有正数,而signed的最高位用0,1来区分正数,负数 。

这里%d代表打印10进制数,第一个printf d+c=-14 所以打印-14 应该能理解,没问题吧?

第2个printf c+d>16 这里是个关系表达式,如果成立,值为1,否则为0 而c和d却1个是unsigned,1个是signed,在这种关系表达式里面,相加的结果随后面一个数的类型,所以加之前就会把int变为unsigedint,因为16是unsigned,所以c被转化为unsigned了,singed转unsigned怎么转的这里就不详细去讲了,去看看计算机原理里面的原码,反码,补码是怎么回事就好,c+d>26 值为真,为1,所以打印1.

c51数据类型,unsigned int和unsigned char是不是可以随意替换(因为都是8位的)

不能替换,unsigned int是2个字节,16位,unsigned char 是一个字节,8位

j最大只需要255,那么一个字节就能表示了,i如果是char的话,那么最大也只能是255,那么循环的次数太少了,达不到延时的要求,所以改成int,最大可以到65535。