Я работаю над назначением лаборатории для класса программирования 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;
}
Я попытался вставить 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};' to 'int M [10] [10] = {{0}};' – user1969104
Спасибо за предложение. Однако это не исправило. – user10721
Я просто попытался исправить предупреждение. Я все еще пытаюсь понять вашу проблему. Вы можете лучше объяснить, что означает «исполняемый файл не работает». – user1969104