Условные операторы не работают?

Столкнулся с такой штукой:
#include <stdio.h>

int x = 5;
int y = 9;
int z = (x > y) ? x : y;

int main(int argc, char const *argv[])
{
	printf("%d\n", z);
	return 0;
}


и компилятор возвращает вот такую ошибку:
C:\Users\alex\Desktop\clang>gcc learn1.c -o learn1.exe
learn1.c:5:9: error: initializer element is not constant
int z = (x > y) ? x : y;

я так понимаю что в переменную z должно было записать число 9 но компилятор ругается на что-то что я не понимаю.
  • Вопрос задан
  • 123 просмотра
Решения вопроса 2
@sand3001
Всего по немногу
Инициализация переменной не константа (это перевод). Думаю можно до main просто объявить z, а внутри main инициализировать
Ответ написан
@mrx_lol Автор вопроса
Все я понял оно не работало потому что переменные не в теле главной функции, но тогда объясните почему нельзя писать условные операторы вне этой функции

#include <stdio.h>

int x = 5;
int y = 9;
int z;

int main(int argc, char const *argv[])
{

	z = (x > y) ? x : y;

	printf("%d\n", z);
	return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы