我有一个数组:
int arr[]={'1','2','4','8','16','32','64','128'};
我用这条线来称呼它:
a=arr[a];
但是,我没有得到想要的输出。输入符合预期(我已经检查过了,它从 0-7 开始),但输出49,50,52,56,49,51,54,49
取决于输入。我做错了什么?
编辑:引号表示 ASCII。知道我错过了一些简单的事情。
输出是正确的。例如,49 是字符的 ASCII 值,'1'
它是数组中的第一个条目。
数组中的初始值设定项是字符文字,而不是int
值,因此数组将填充每个字符文字的数值('32'
允许使用多字节字符文字,例如 ,但它们的值是实现定义的,请参阅如何确定分配的结果多字符 char 常量到 char 变量?)。
要获得所需的输出,请使用int
文字:
int arr[]={1,2,4,8,16,32,64,128};
在此声明int arr[]={'1','2','4','8','16','32','64','128'};
中,您将存储 ascii 值,因为您将它们声明为字符串。因此,当您对数组进行索引时,会检索49
for 1
、50
for 2
、52
for 4
、56
for 8
、49
for 1
of 16
、51
for 3
of 32
、54
for 6
of64
和49
for 1
of的值。128
int arr[]={'1','2','4','8','16','32','64','128'};
您应该将arr
数组声明为char
而不是int
.
您获得数字而不是字符的确切原因是您使用的输出库是通过int
参数调用的。由此,图书馆了解您提供的数据应该被解释并显示为数字。
此外,您获得的数字是数组中值的ASCII或数字等价物。