关于u16的一点理解

2019-08-17 06:03发布

刚才看程序时候遇到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语言才知道很渣,还忘各位兄弟指点小弟一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
yuzeyuan1
1楼-- · 2019-08-17 11:17
stm32f103ZE 发表于 2017-6-21 16:25
刚才DMA历程中看到条代码
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"};
后面串 ...

一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等等,第N个位置和第N+1个位置存“串”(因为一个汉字的GBK码是两个字节,它会自动用GBK码表示,比如串字可能就是0xA1,0x3D,所以可以存)。

然后u16 a[10]这么定义一般来说A里面东西都是同一类型的,没有人把一堆不同类型的东西看一个数组里(结构体除外)。你上面的英文+汉字,其实英文会自动转成ASCII 码,汉字会自动转成GBK码,所以类型也是一样的,都是u8。

至于结构体,额,不会,我也正在学它。
翼间
2楼-- · 2019-08-17 12:27
数据类型不一样确认长度不超可以存,但是大多数编译器会有警告。
stm32f103ZE
3楼-- · 2019-08-17 14:14
翼间 发表于 2017-6-21 15:52
数据类型不一样确认长度不超可以存,但是大多数编译器会有警告。

刚才DMA历程中看到条代码
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"};
后面串口实验四个字不是汉字吗,占16位 为什么这个数组也可以存放
尚磊12323
4楼-- · 2019-08-17 18:23
 精彩回答 2  元偷偷看……
stm32f103ZE
5楼-- · 2019-08-17 19:29
yuzeyuan1 发表于 2017-6-21 17:39
一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等 ...

那就是U8 U16 U32存放数据的区别是什么呢
stm32f103ZE
6楼-- · 2019-08-17 20:10
stm32f103ZE 发表于 2017-6-21 17:50
那就是U8 U16 U32存放数据的区别是什么呢

又仔细想了你说的话,觉得大概U8 U16 U32的区别就是定义位数不一样,
u8 就是里面的数据是8位的
u16 就是里面的数据是16位的
u32 就是里面的数据是32位的
对吧  

一周热门 更多>