刚才看程序时候遇到u8 u16 u32,然后查了查资料,关于他们含义的一点理解。
u8、u16、u32
u8 无符号字符型(8位)
u16 无符号短整型(16位)
u32 无符号长整型(32位)
刚才碰到的问题是定义一个u16的数组 u16 a[10],这个u16的意思是不是就是定义数组中的每一个数最高位是16位,
也就是,可以存放字符(字符占8位)abc等,
也可以存放字(一个字是两个字节,所以占16位),
同样也可以存放数字123(但是存放数的最大不能超过2^16)等,
是这个意思吗
想得不知道对不对,以前觉得C语言基础还可以,感觉学32以后用到C语言才知道很渣,还忘各位兄弟指点小弟一下。
一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等等,第N个位置和第N+1个位置存“串”(因为一个汉字的GBK码是两个字节,它会自动用GBK码表示,比如串字可能就是0xA1,0x3D,所以可以存)。
然后u16 a[10]这么定义一般来说A里面东西都是同一类型的,没有人把一堆不同类型的东西看一个数组里(结构体除外)。你上面的英文+汉字,其实英文会自动转成ASCII 码,汉字会自动转成GBK码,所以类型也是一样的,都是u8。
至于结构体,额,不会,我也正在学它。
刚才DMA历程中看到条代码
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"};
后面串口实验四个字不是汉字吗,占16位 为什么这个数组也可以存放
那就是U8 U16 U32存放数据的区别是什么呢
又仔细想了你说的话,觉得大概U8 U16 U32的区别就是定义位数不一样,
u8 就是里面的数据是8位的
u16 就是里面的数据是16位的
u32 就是里面的数据是32位的
对吧
一周热门 更多>