2012-08-07 65 views
0

我想在C编写8051 uC上的一些软件。问题是最长整数等于16位。是否有可能创建我自己的32位无符号整数变量?当然,它应该支持所有的操作,如+, - ,< <等。如何在纯C中存储32位整数变量在8051 uC

如果不可能有什么替代?对我而言,我想到的唯一方法是拥有两个16位整数。但在这个解决方案中,我认为我不能使用标准的操作符。在所有操作中,我都必须记住修改两个整数。

有没有更好的方法?

在此先感谢。

+1

'uint32_t'怎么样? – 2012-08-07 22:11:52

+0

这是一些[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

+0

你使用哪种编译器? – 2012-08-08 21:07:10

回答

1

如果你的编译器/ libc实现符合C99,您可以使用

uint32_t 

类型来表示32位无符号整数。如果没有,你仍然可以给

unsigned long 

试一试(打印它的sizeof看它有多大)。

+0

uint32_t在C 1999中是可选的。 – 2012-08-07 22:23:26

+0

您也可以尝试很长时间。如果一切都失败了,你总是可以编写一套简洁的函数。 – Kaslai 2012-08-08 08:50:15

+0

@Aslai'long long'也是C99依赖的。 – 2012-08-08 08:50:44