2012-08-07 70 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