0

我有一个数组:

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

4 回答 4

2

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

于 2013-03-18T15:31:24.577 回答
1

数组中的初始值设定项是字符文字,而不是int值,因此数组将填充每个字符文字的数值('32'允许使用多字节字符文字,例如 ,但它们的值是实现定义的,请参阅如何确定分配的结果多字符 char 常量到 char 变量?)。

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

int arr[]={1,2,4,8,16,32,64,128};
于 2013-03-18T15:31:09.757 回答
0

在此声明int arr[]={'1','2','4','8','16','32','64','128'};中,您将存储 ascii 值,因为您将它们声明为字符串。因此,当您对数组进行索引时,会检索49for 150for 252for 456for 849for 1of 1651for 3of 3254for 6of6449for 1of的值。128

于 2013-03-18T15:33:11.100 回答
0

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

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

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

于 2013-03-18T15:34:52.533 回答