Мне нужно переписать некоторые алгоритмы с JavaScript на C++. Поэтому у меня есть вопрос: на что я должен обратить внимание? Какие различия между оценкой в JS и C++?Оценка выражения JS vs C++
Например, это облегченное алгоритм:
var pi2 = Math.PI * 2;
var s = period/pi2 * Math.asin(1/amplitude);
if ((t*=2)<1) return -0.5*(amplitude*Math.pow(2,10*(t-=1))*Math.sin((t-s)*pi2/period));
return amplitude*Math.pow(2,-10*(t-=1))*Math.sin((t-s)*pi2/period)*0.5+1;
Когда я просто изменить var
с до double
с и Math.
к std::
, он будет компилировать, но -=
в выражении приведет к UB (мой компилятор говорит, что это).
Какие еще интересные отличия вы знаете?
Возможно, вы захотите ознакомиться с порядковыми точками, порядком оценки и последовательности. – Deduplicator
Вопрос гигантски широк и вряд ли будет полностью удовлетворен, если вы не ожидаете, что мы перепечатаем несколько учебников здесь. – PartyLich
@Deduplicator Я не думаю, что оценочные последовательности в этом примере слишком разные. Неопределенное поведение может быть вызвано вычитанием float из целого числа или чем-то подобным. Это также сильно зависит от используемого компилятора и ОС, для которого скомпилирован код. – VisioN