2013-03-18 29 views
0

從陣列所需的輸出我有一個數組:未接收用C

int arr[]={'1','2','4','8','16','32','64','128'}; 

我正與這行調用它:

a=arr[a]; 

然而,我沒有得到所期望的輸出。輸入與預期的一樣(我已經檢查過,它從0-7),但輸出依據輸入而變爲49,50,52,56,49,51,54,49。我做錯了什麼?

編輯:引號表示ASCII。知道我錯過了簡單的事情。

+0

這是真的在8051嗎?! – 2013-03-18 15:31:31

+0

爲什麼不用'(1 << a)'代替? (除了明顯的數組初始化錯誤已經包含在答案中) – 2013-03-18 15:31:47

+0

你的數組應該是'const'。此外,啓用(moar!)編譯器警告,因爲「16」是一個多字符字符,它很少有用,因此傾向於生成警告。 – unwind 2013-03-18 15:35:01

回答

2

輸出是正確的。例如,49是字符'1'的ASCII值,這是數組中第一個條目的ASCII值。

+0

Gah,ascii,知道這是簡單的事情。謝謝! – 2013-03-18 15:32:42

0

在此聲明int arr[]={'1','2','4','8','16','32','64','128'};中,您正在存儲ascii值,因爲您聲明它們是字符串。因此,的491的值,5025245684916151用於32354用於64649用於1281,其被檢索時索引到數組中。

0

int arr[]={'1','2','4','8','16','32','64','128'}; 你應該聲明你arr數組作爲char而不是int

獲取數字而不是字符的確切原因是您使用的輸出庫被稱爲int參數。從這一點上,圖書館理解你給它的數據應該被解釋和顯示爲數字。

此外,您得到的數字是ASCII或數組等效值。