我想在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