Ошибка компиляции "initializer element is not constant" - C (СИ)
Формулировка задачи:
Здравствуйте. Наткнулся(ладно, каюсь - сам написал) на вот такой код:он не компилируется в связи с тем что:я несколько непонимаю почему так? ведь x - константа, а 1.0 разделить на константу - тоже константа. то есть, я какбы константу инициализирую константой, однако gcc имеет инное мнение по этому поводу. полагаю дело в static, т.к. если убрать спецификатор const, то ошибка остается. а вот так работает:гугление выдает только информацию, касательно того как static, действует на область видимости переменной.
#include <stdio.h> static const int x = 23; static const double y = 1.0 / (double)x; int main() { printf("x = %d, y = %lf\n", x, y); return 0; }
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o test.o ..\test.c ..\test.c:4:1: error: initializer element is not constant const double y = 1.0 / (double)x; ^
#include <stdio.h> int main() { const int x = 23; const double y = 1.0 / (double)x; printf("x = %d, y = %lf\n", x, y); return 0; }
Решение задачи: «Ошибка компиляции "initializer element is not constant"»
textual
Листинг программы
static const double y = 1.0 / (double)x;
Объяснение кода листинга программы
В данном коде происходит объявление и инициализация константной переменной типа double с именем y
. Значение переменной y
вычисляется как результат деления единицы на значение переменной x
. Тип данных переменной x
не указан в данном фрагменте кода, но предполагается, что это целочисленный тип. Также стоит отметить, что в данном коде не происходит никаких действий, кроме инициализации переменной y
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д