我正在为我正在进行的C编程课程的实验任务工作。我在我的本地Cygwin目录中编写了代码,使用gcc
对其进行编译,生成的可执行文件完全按照我希望的方式工作,没有任何错误。为什么gcc不能一致地编译这段代码?
当我将我的代码复制到我的学校的UNIX服务器上并用gcc
进行编译时,我没有收到任何错误,但是当我尝试运行它时,没有任何反应。
我试图这样做gcc 2darray.c -Wall -pedantic
,这是返回什么:
2darray.c: In function 'main':
2darray.c:5:3: warning: missing braces around initializer [-Wmissing-braces]
2darray.c:5:3: warning: (near initialization for 'M[0]') [-Wmissing-braces]
2darray.c:5:24: warning: C++ style comments are not allowed in ISO C90 [enabled by default]
2darray.c:5:24: warning: (this will be reported only once per input file) [enabled by default]
的错误提一些关于初始化数组M
,但我没有看到我初始化的方式出现任何问题。下面的代码我试图编译:
#include <stdio.h>
int main(void)
{
int M[10][10] = {0}; // creating a 10x10 array and initializing it to 0
int i, j; // loop variables
int sum[10] = {0}; // creating an array to hold the sums of each column of 2d array M
for (i = 1; i < 10; i++) // assigning values to array M as specified in directions
{
for (j = i - 1; j < i; j++)
{
M[i][j] = -i;
M[i][j+1] = i;
M[i][j+2] = -i;
}
}
for (i = 0; i < 10; i++) // printing array M
{
for(j = 0; j < 10; j++)
{
printf("%3d", M[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < 10; i++) // calculating sum of each column
{
for (j = 0; j < 10; j++)
{
sum[i] = M[j][i] + sum[i];
}
printf("%3d", sum[i]); // printing array sum
}
return 0;
}
我试图插入变量声明和第一个for循环和打印语句之间的printf语句,所以也许不顺心的事在我的循环?
如果相关,这里的输出看起来像从我的Cygwin的目录,它应该喜欢什么我在学校的UNIX目录:
0 0 0 0 0 0 0 0 0 0
-1 1 -1 0 0 0 0 0 0 0
0 -2 2 -2 0 0 0 0 0 0
0 0 -3 3 -3 0 0 0 0 0
0 0 0 -4 4 -4 0 0 0 0
0 0 0 0 -5 5 -5 0 0 0
0 0 0 0 0 -6 6 -6 0 0
0 0 0 0 0 0 -7 7 -7 0
0 0 0 0 0 0 0 -8 8 -8
0 0 0 0 0 0 0 0 -9 9
-1 -1 -2 -3 -4 -5 -6 -7 -8 1
尝试更改'int M [10] [10] = {0};'为'int M [10] [10] = {{0}};' – user1969104
感谢您的建议。它虽然没有修复它。 – user10721
我只是试图解决警告。我仍然试图理解你的问题。你可以更好地解释'可执行文件不起作用'的含义。 – user1969104