我想在C编写8051 uC上的一些软件。问题是最长整数等于16位。是否有可能创建我自己的32位无符号整数变量?当然,它应该支持所有的操作,如+, - ,< <等。如何在纯C中存储32位整数变量在8051 uC
如果不可能有什么替代?对我而言,我想到的唯一方法是拥有两个16位整数。但在这个解决方案中,我认为我不能使用标准的操作符。在所有操作中,我都必须记住修改两个整数。
有没有更好的方法?
在此先感谢。
我想在C编写8051 uC上的一些软件。问题是最长整数等于16位。是否有可能创建我自己的32位无符号整数变量?当然,它应该支持所有的操作,如+, - ,< <等。如何在纯C中存储32位整数变量在8051 uC
如果不可能有什么替代?对我而言,我想到的唯一方法是拥有两个16位整数。但在这个解决方案中,我认为我不能使用标准的操作符。在所有操作中,我都必须记住修改两个整数。
有没有更好的方法?
在此先感谢。
如果你的编译器/ libc实现符合C99,您可以使用
uint32_t
类型来表示32位无符号整数。如果没有,你仍然可以给
unsigned long
试一试(打印它的sizeof看它有多大)。
uint32_t在C 1999中是可选的。 – 2012-08-07 22:23:26
您也可以尝试很长时间。如果一切都失败了,你总是可以编写一套简洁的函数。 – Kaslai 2012-08-08 08:50:15
@Aslai'long long'也是C99依赖的。 – 2012-08-08 08:50:44
'uint32_t'怎么样? – 2012-08-07 22:11:52
这是一些[stdint.h的信息](http://pubs.opengroup.org/onlinepubs/007904975/basedefs/stdint.h.html),作为C99标准的一部分引入,它应该在大多数情况下可用现代的C编译器。正如@ H2CO3所提到的,它提供了'uint32_t'类型,它保证是一个无符号的32位整数。 – maerics 2012-08-07 22:15:32
你使用哪种编译器? – 2012-08-08 21:07:10