2013-03-18 24 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或数组等效值。