Ошибка компиляции "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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д