C语言问题
为什么会出错呀?#include <stdio.h>
int main()
{
int a = { = 1; = 2; = 3};
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", a);
}
printf("\n");
}
return 0; 这段代码在赋值数组时使用了C99标准的特性——指定初始化器,但是由于使用了错误的语法导致编译错误。
正确的指定初始化器语法应该是使用大括号括起来,每个元素之间用逗号分隔。修改后的代码如下:
#include <stdio.h>
int main()
{
int a = {{1, 0, 0}, {0, 2, 0}, {0, 0, 3}};
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", a[ i]);
}
printf("\n");
}
return 0;
}
这样就可以正确地输出数组的值了。 你的代码中出现了语法错误。在C语言中,初始化二维数组时不能使用类似于 = 1; = 2; = 3的写法。
要正确初始化二维数组,你可以使用以下两种方法:
1. 使用嵌套的花括号来初始化数组的每个元素:
int a = {
{1, 0, 0},
{0, 2, 0},
{0, 0, 3}
};
2. 分行初始化每个元素:
int a = {
= 1,
= 2,
= 3
};
修正后的代码如下所示:
#include <stdio.h>
int main(){
int a = {
{1, 0, 0},
{0, 2, 0},
{0, 0, 3}
};
int i, j;
for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){
printf("%d ", a[ i]);
}
printf("\n");
}
return 0;
}
这样就能正确地初始化并打印出二维数组的值了。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 本帖最后由 学习编程中的Ben 于 2023-9-10 12:57 编辑
你第5行是:
int a = { = 1; = 2; = 3};
但是定义数组时,你应该用逗号来分割鸭!而且不能再数组里面使用[][]来写
正确写法:
int a = {{1, 0, 0}, {0, 2, 0}, {0, 0, 3}};
页:
[1]