我有一个数组:
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 :(得分: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
} {},4
为56
8
,49
为1
16
,51
为3
32
的{{1}}和54
6
64
,在您索引数组时检索。
答案 3 :(得分:0)
int arr[]={'1','2','4','8','16','32','64','128'};
您应该将arr
数组声明为char
而不是int
。
获取数字而不是字符的确切原因是您使用的输出库使用int
参数调用。由此,图书馆了解您提供的数据应该被解释并显示为数字。
此外,您获得的数字是 ASCII 或数组中值的等效数字。