Ошибка Visual C++ C2143:ошибка синтаксиса:отсутствует ')' перед 'константой'
-
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?) * глубина);
Я столкнулся с аналогичной ошибкой при объявлении перечисления.Это произошло потому, что одна из констант перечисления была объявлена в другом месте кода.