没有从C中的数组接收所需的输出

时间:2013-03-18 15:29:38

标签: c arrays 8051

我有一个数组:

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

我用这句话来称呼它:

a=arr[a];

但是,我没有得到所需的输出。输入是预期的(我已经检查了它,它从0到7),但输出结果为49,50,52,56,49,51,54,49,具体取决于输入。我做错了什么?

编辑:引号表示ASCII。知道我错过了一些简单的事情。

4 个答案:

答案 0 :(得分:2)

输出正确。 49是字符'1'的ASCII值,例如,它就是数组中第一个条目。

答案 1 :(得分:1)

数组中的初始值设定项是字符文字,而不是int值,因此数组将填充每个字符文字的数值(多字节字符文字,例如'32'),但是value是实现定义的,请参阅How to determine the result of assigning multi-character char constant to a char variable?)。

要获得所需的输出,请使用int文字:

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

答案 2 :(得分:0)

在此声明int arr[]={'1','2','4','8','16','32','64','128'};中,当您声明它们是字符串时,您将存储ascii值。因此,49的{​​{1}},1的{​​{1}},50的{​​{1}},{{1}的2的值52 } {},456 8491 16513 32的{​​{1}}和54 6 64,在您索引数组时检索。

答案 3 :(得分:0)

int arr[]={'1','2','4','8','16','32','64','128'}; 您应该将arr数组声明为char而不是int

获取数字而不是字符的确切原因是您使用的输出库使用int参数调用。由此,图书馆了解您提供的数据应该被解释并显示为数字。

此外,您获得的数字是 ASCII 或数组中值的等效数字。