Ошибка Visual C++ C2143:ошибка синтаксиса:отсутствует ')' перед 'константой'

StackOverflow https://stackoverflow.com/questions/720440

  •  23-08-2019
  •  | 
  •  

Вопрос

Я получаю сообщение об ошибке в Visual C++, из-за которой мне очень тяжело.

Ошибка - это ошибка c2143, читающая:ошибка синтаксиса:отсутствует ')' перед 'константой'

Моя строка кода:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2 * depth); 

У меня есть #include в начале файла, который должен определить функцию Floor (double).

немного больше объяснений переменных.

двойная глубина — это переменная-член класса, в котором находится эта строка.
int i — увеличивающееся значение индекса.
double t — увеличивающееся значение.

Что они делают, на самом деле неважно, но я хотел уточнить, что все три уже определены как переменные базовых типов.

Я проверил и убедился, что все скобки совпадают.Я как бы не понимаю, о какой «константе» говорит компилятор.Есть идеи?

Это было полезно?

Решение

Я не совсем уверен, является ли это той же ошибкой, которую выдает вам компилятор, но вам нужно поставить знак «*» перед второй «2», чтобы это:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2 * depth);

Становится это:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) * 2 * depth);

Другие советы

Другие плакаты показали вам фактическую ошибку в операторе, но, пожалуйста, разделите его на несколько подвыражений, которые более четко покажут, что вы пытаетесь сделать математически, потому что эта функция вызовет у вас головную боль в будущем, если вы не сделаете этого. 'т!

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) (the problem is here) 2 * depth);

Несмотря на то, что у вас есть правильный ответ, я собираюсь объяснить, как вы должны были к нему прийти.

Если вы столкнулись с ошибкой в ​​длинном выражении, которую не можете найти, разбирайте выражение по частям, пока не найдете его.

В этом случае:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2 * depth);

становится:

firsthalf = (1 - (2 * depth));
secondhalf = ((t - floor( t + 0.5 ) + 1 ) 2 * depth);   // Error appears on this line
coefficient[i] = firsthalf + secondhalf;

Это исключает первую часть как источник ошибки.

Следующая попытка:

exprA = (t - floor( t + 0.5 ) + 1 );
exprB = exprA * 2;
exprC = exprB * depth;   // Hmm.... this all worked.  Start putting it back together.
secondhalf = exprC;

Последняя попытка:

exprA = (( MY_TEST_CONSTANT ) 2 * depth);   // Error now becomes obvious.

коэффициент[i] = (1 - (2 * глубина)) + ((t - пол(t + 0,5) + 1) 2(Что здесь делает 2?) * глубина);

Я столкнулся с аналогичной ошибкой при объявлении перечисления.Это произошло потому, что одна из констант перечисления была объявлена ​​в другом месте кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top