Ошибка при объявлении int - "initializer element is not constant"

285
15 октября 2021, 19:40

Начал изучать язык Си. Пытаюсь скомпилировать простенькую программку, и выбивает такую ошибку. Прочекал весь интернет, но не смог решить. Не подскажите где меня подстрелили? Спасибо. Это ошибка:

hello.c:4:1: error: initializer element is not constantint rand_num = rand() % 11;

Это мой код:

#include <stdio.h>
#include <stdlib.h>
int rand_num = rand() % 11;
int sup_num;
void probability();
int main() {
    srand(time(NULL));
    while(sup_num != rand_num) {
        printf("What is my number?");
        scanf("%d", &sup_num);
        probability();
    }
    return 0;
}
void probability() {
    if(sup_num > rand_num) {
        printf("My number is bigger\n");
    } else if(sup_num < rand_num) {
        printf("My number is less\n");
    } else {
        printf("Gotcha! It is my number!");
    } 

}

Answer 1

В языке С не допускается использование неконстантных значений для инициализации объектов со статическим классом памяти. Об этом вам открытым текстом и говорит компилятор.

То есть для переменной типа int, объявленной на уровне файла, инициализатором может служить 0 или 42, но ни в коем случае не rand() % 11.

Answer 2

Вы инициализируете переменную не константным значением.

Попробуйте так:

#include <stdio.h>
#include <stdlib.h>
int rand_num, sup_num;
void probability();
int main() {
    srand(time(NULL));
    rand_num = rand() % 11;
    while(sup_num != rand_num) {
        printf("What is my number?");
        scanf("%d", &sup_num);
        probability();
    }
    return 0;
}
void probability() {
    if(sup_num > rand_num) {
        printf("My number is bigger\n");
    } 
    else if(sup_num < rand_num) {
        printf("My number is less\n");
    } 
    else {
        printf("Gotcha! It is my number!");
    } 
}
READ ALSO
Свайп в jquery, библиотека jquery.mobile

Свайп в jquery, библиотека jquery.mobile

В общем дело такое, мне надо отследить свайп, я решил использовать jquerymobile

114
Функция которая считает сумму цифр числа через рекурсию

Функция которая считает сумму цифр числа через рекурсию

Нужно посчитать сумму цифр в числе использую рекурсию ( 123 = 1 + 2 + 3 = 6)Я решил задачу так , но в браузере не появляется модальное окно , долго...

553
Порядок действий в React.js с fetch

Порядок действий в React.js с fetch

Написал следующий код по примерам с fetch:

261