电子产品世界 » 论坛首页 » 嵌入式开发 » 单片机 » 8\16\32位单片机中数据类型长度的问题


共5条 1/1 1 跳转至

8\16\32位单片机中数据类型长度的问题

菜鸟
2017-12-10 12:18:00    评分

   怎样确定不同位数单片机中的数据类型int,uint,short,char,uchar所占字节长度,所占长度和什么有关和怎样测试问题。    

   之前对int的理解一直是C语言书上的占4个字节,但是最近在调MSP430F5529这个16单片机时发现,给一个int型数据i,做一个累加循环到25563,但是结果好像溢出了,并且得不到最后想要的结果。在把最后累加值改到249后程序恢复正常。

    针对以上问题,提问,不同单片机的数据类型所占字节数怎样测试和什么有关。

    这个问题还是应该弄懂,不然一不注意就溢出,回查也很浪费时间;所以,各路大神支支招吧,谢谢啦。




关键词: 单片机     数据类型所占长度     int     char    

高工
2017-12-11 02:41:28    评分
2楼

几个字节是跟所用的编译器直接相关


专家
2017-12-11 08:59:35    评分
3楼

可以用sizeof函数测试出来。

返回值 = sizeof ( 变量 );


专家
2017-12-11 09:32:40    评分
4楼

C标准库里提供了这个问题的完美解决方案。

引用stdint.h库文件,然后使用类似 uint8_t的关键字来做类型定义即可。


话说,这个问题应该不是很大啊!


菜鸟
2017-12-13 16:46:28    评分
5楼

嗯嗯,谢谢各位。

总结:在各编译器中对数据类型长度有不同的定义,用C编译时可以用sizeof()测试,C语言编程就是为了和硬件解耦,所以不需要考虑目标机的处理位数,因为编译器会根据目标单片机类型自动完成转换。这样理解对吗?


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]