2013-05-07 44 views
0

我使用哪種數據類型來存儲以下值?使用PIC18的數據類型?

:86400

代碼

int d[6]; 
unsigned int all; 
d[0] = 8; 
d[1] = 6; 
d[2] = 4; 
d[3] = 0; 
d[4] = 0; 

all = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] + d[4]; 
printf("%u", all); 

如果我將此代碼複製到代碼塊,它工作正常。但是,在MPLAB C18編譯器中,我會得到不同的結果。

代碼塊輸出:86400

MPLAB輸出:20864

你如何解決這個問題?謝謝!

+0

你不是已經在這裏問這個問題了嗎? - [以前的線程](http://stackoverflow.com/questions/16403009/how-to-store-values-in-an-array-to-a-variable-on-mplab) – 2013-05-07 05:22:35

回答

1

類型int不保證是32位,它可以是例如, 16位(即對於unsigned int具有從0到65535的值)。這裏就是這種情況。您需要在這裏使用long類型。

+0

我用了很久,我得到了這與20864相同的結果很奇怪。 – Ammar 2013-05-07 02:02:21

+0

@Ammar你需要使用'long'作爲_both_變量。 – 2013-05-07 02:05:49

+0

@Ammar當然,你需要修改'printf'格式爲'「%lu」'。 – 2013-05-07 02:09:34