Почему я не могу инициализировать мой массив? - PullRequest
2 голосов
/ 28 ноября 2011

Все, что я пытаюсь сделать, это инициализировать мой массив со всеми нулями в C, но мой компилятор продолжает выдавать мне ошибки (и ошибки не помогают). В массиве 24 записи, а значения являются значениями с плавающей запятой.

main()
{

/* Array of users arrival & departure time */
float user_queue[24];

/* Initialize queue to 0 */
int i;
for(i = 0; i < 24; i++)
{
    user_queue[i] = 0.0;
}

/* Simulation time */
float time = 0;

Компилятор выдает ошибку в строке «float time». Ошибка исчезнет, ​​если я удалю цикл for.

синтаксическая ошибка: отсутствует; перед вводом

Ответы [ 5 ]

4 голосов
/ 28 ноября 2011

Возможно, вам не разрешат объявлять переменные после того, как вы уже использовали выражения. Попробуйте переместить объявление time в начало:

main()
{

/* Array of users arrival & departure time */
float time, user_queue[24];

/* Initialize queue to 0 */
int i;
for(i = 0; i < 24; i++)
{
    user_queue[i] = 0.0;
}

/* Simulation time */
time = 0;
3 голосов
/ 28 ноября 2011

Для этого вам даже не нужен цикл:

/* Array of 24 users */
float user_queue[24] = { 0.0 }; 

это инициализирует массив всеми нулями без цикла for.

3 голосов
/ 28 ноября 2011

Вы обгоняете массив на 1 элемент.Попробуйте вместо этого:

for(i = 0; i < 24; i++)

Измените <= на <.

РЕДАКТИРОВАТЬ: С новой информацией.

Вывозможно компиляция в режиме C89 / 90 или ANSI C.В этих более старых версиях C объявления переменных должны находиться в начале функции или области видимости.Вы не можете смешивать объявления и подобный код.

Попробуйте это:

main()
{

    /* Array of users arrival & departure time */
    float user_queue[24];

    float time;  /* Declare up here */

    /* Initialize queue to 0 */
    int i;
    for(i = 0; i < 24; i++)
    {
        user_queue[i] = 0.0;
    }

    /* Simulation time */
    time = 0;
2 голосов
/ 28 ноября 2011

<, а не <=, таким образом:

for( i = 0; i < 24; i++ )

При создании массива, подобного этому:

float user_queue[24]

Вы создаете массив из 24 элементов, пронумерованных от 0 до 23.

Что касается вашего обновленного кода, float time = 0; должен находиться в начале блока main(){.....}.C до C99 (за исключением некоторых реализаций) не позволяли вам объявлять переменные, кроме как в начале их включающей области видимости / блока.

0 голосов
/ 28 ноября 2011

Просто сделайте это:

float user_queue[24] = {0};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...