所以我有下面的代码,我想知道我的元素的类型是什么。我希望它们是整数,但我不知道为什么当我给某组索引分配零时,我必须使用撇号。我的元素类型是什么?输出是一个10by10的零数组,但我需要元素是整数
#include <stdio.h>
#include <stdlib.h>
int main() {
int accumulator[10][10];
int i,j;
for (i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
accumulator[i][j] = '0';
printf("%c ", accumulator[i][j]);
}
printf("n");
}
return 0;
}
对于算术,请使用int 0。对于字符串,请使用字符"0"。
printf("Number %dn", 0);
printf("Char %cn", '0');
输出:
Number 0
Char 0
在此语句中
accumulator[i][j] = '0';
整数字符常量'0'
具有int类型和字符"0"的代码值。例如,在ASCII中,它等于tp 48。
如果你想用零初始化数组,那么你可以像一样在声明中初始化数组
int accumulator[10][10] = { 0 };
或写入
accumulator[i][j] = 0;
至于你的问题,那么二维数组的元素类型是int[10]
。也就是说,阵列的元素是一维阵列,其依次具有其元素的类型int
。
你可以像一样重写声明
int ( accumulator[10] )[10];
或者你可以引入一个typedef名称,比如
typedef int T[10];
然后像一样重写二维数组的声明
T accumulator[10];
现在可以直观地看到,阵列的元素的类型是对应于类型int[10]
的T
。
在这个表达式中
accumulator[i][j]
同胞表达
accumulator[i]
给出了数组的第i个元素,正如所指出的,它是一维数组。将下标运算符应用于上述表达式,可以得到二维数组元素的一个元素
( accumulator[i] )[j]
其具有类型CCD_ 6。
为什么当我将零分配给某组索引时,我必须使用撇号
因为您使用了错误的printf
格式说明符。如果要打印整数,请使用%d
而不是%c
。
printf("%d ", accumulator[i][j]);