完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-14 10:09 编辑
在ti提供的库中,几种基本的数据类型的定义如下: #ifndef DSP28_DATA_TYPES#define DSP28_DATA_TYPEStypedef int int16;// = 2?typedef long int32; // = 4?typedef long long int64; // = 8?typedef unsigned int Uint16; // = 2?typedef unsigned long Uint32; // = 4?typedef unsigned long long Uint64; // = 8?typedef float float32;typedef long double float64;#endif但是,在实际的sizeof代码测试中,返回的值结果并不一样: 使用的代码是: int sizeChar,sizeShort,sizeInt,sizeLong,sizeLongLong,sizeLongDouble,sizeFloat;int main(void) [ sizeChar = sizeof(char); sizeShort = sizeof(short); sizeInt = sizeof(int); sizeLong = sizeof(long); sizeLongLong = sizeof(long long); sizeFloat = sizeof(float); sizeLongDouble = sizeof(long double); return 0;] 后续,继续测试,使用一个共同体,测试如下: union u_temp[ Uint32 _int32; unsigned char _int8[4];]temp;int main(void) [ temp._int32 = 0x12345678; return 0;] 也就是说,假如char是正常的8位宽度的话,实际标注的Uint32的宽度实际上也仅仅是16位。只有使用到longlong才能提供32位宽度的数据类型。 |
|
相关推荐
5个回答
|
|
|
|
|
|
抹茶小婊砸 发表于 2018-6-14 04:03 也就是说,因为数据总线是16位的关系,所以即使向一个char类型中存储0x01,实际存储进去的也是0x0001。因为这个原因,所以,我的共同体的实际样式为: [ int32 a; char b[2]; ] 然后一个char类型的数据,实际上能够存下0xFFFF。 |
|
|
|
|
|
|
|
刚刚尝试使用0xFFFF灌入一个char类型,得到的观测值还是0xFFFF。应该是没有清零。 那么,问题来了,我在实际编程中,需要如何注意此问题呢。 比如,sizeof得到的值就变得轻易不可用,对于header中没有定义的char的宽度和short的宽度,也就不敢轻易使用了。 |
|
|
|
神圣奇迹 发表于 2018-6-14 04:39 就把char当做16位数据类型使用即可,其余不小于16位的数据类型没影响 |
|
|
|
只有小组成员才能发言,加入小组>>
827 浏览 1 评论
1071 浏览 0 评论
620 浏览 1 评论
467 浏览 1 评论
662 浏览 2 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
264浏览 29评论
1227浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
357浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
337浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
203浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-6 11:41 , Processed in 1.099528 second(s), Total 55, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191