Как прочитать эту конкретную ошибку компилятора:
prog.c: 3: 1: ошибка: ожидаемый идентификатор или маркер '(' before '{' {^
Это говорит о том, что ошибка возникает в строке 3:
1: #include <stdio.h>
2: int main();
3: { // <------ compiler is complaining about this line
и что он видит {
там, где его не должно быть. Единственный раз, когда он должен видеть {
, это послеобъявление функции (имя функции плюс список аргументов) или после идентификатора (для определения структуры, объединения или перечисления).
Проблема в том, что после int main
не должно быть точки с запятой.компилятор обрабатывает int main()
как объявление , а не начало функции определение .
Удалите эту точку с запятой, и ошибка исчезнет.
Важный урок здесь - компилятор не сообщает вам, где вы на самом деле допустили ошибку, но где эта ошибка препятствует переводу кода . Если у вас есть глубоко вложенный цикл, например
for (...)
{
for (...)
{
for (...)
{
и вы забыли вставить закрывающую скобку наВ самом внутреннем цикле компилятор не скажет: «Вы забыли поставить закрывающую скобку в этом самом внутреннем цикле »;вместо этого он будет жаловаться на строку несколькими путями вниз, потому что она достигла конца программы или определения следующей функции, не видя закрывающего }
предыдущей функции.
Как бы я сделал его бесконечным циклом?
Синтаксис для бесконечного цикла: while(1)
или for(;;)
.Неважно, какой вы используете, компилятор должен ( должен ) генерировать один и тот же код для обоих.Однако, как говорили другие люди, числа Фибоначчи очень быстро становятся очень большими, слишком большими для представления целочисленного типа данных.Вы начнете видеть ошибки переполнения после вычисления 50-го числа F или около того.