Почему делает “**”, связывают более плотно, чем отрицание?

Вы можете использовать аргумент --form с явно

curl -H "Content-Type: multipart/related" \
  --form "data=@example.jpg;type=image/jpeg" http://localhost:3000/test
.
9
задан Ben Blank 1 June 2009 в 21:33
поделиться

5 ответов

Это поведение такое же, как и в математических формулах, поэтому я Я не уверен, в чем проблема или почему это противоречит интуиции. Вы можете объяснить, где вы видели что-то другое? «**» всегда связывает больше, чем «-»: -x ^ 2 не то же самое, что (-x) ^ 2

Просто используйте (-1) ** 2, точно так же, как в математике.

22
ответ дан 4 December 2019 в 07:35
поделиться

Краткий ответ: это стандартный способ работы приоритета в математике.

Допустим, я хочу вычислить многочлен 3x 3 - x 2 + 5.

def polynomial(x):
    return 3*x**3 - x**2 + 5

Это выглядит лучше, чем ...

def polynomial
    return 3*x**3 - (x**2) + 5

И первый способ - это то, как это делают математики. Другие языки с возведением в степень работают точно так же. Обратите внимание, что оператор отрицания связывает более свободно, чем умножение, поэтому

-x*y === -(x*y)

То же самое и в математике.

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

-x*y === -(x*y)

То же самое и в математике.

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

-x*y === -(x*y)

То же самое и в математике.

4
ответ дан 4 December 2019 в 07:35
поделиться

Если бы мне пришлось угадывать, это было бы потому, что наличие оператора возведения в степень позволяет программистам легко возводить числа в дробные степени. Отрицательные числа, возведенные в дробную степень, обычно имеют мнимую составляющую, так что этого можно избежать, привязав ** более жестко, чем унарный -. Большинство языков не любят мнимые числа.

В конечном итоге, конечно, это просто соглашение - и чтобы сделать ваш код читаемым для вас и других, вы, вероятно, захотите явно сгруппировать свой (-1), чтобы никто другой не попадется в эту ловушку :) Удачи!

3
ответ дан 4 December 2019 в 07:35
поделиться

Мне это кажется интуитивным.

Во-первых, потому что это согласуется с математической записью: -2 ^ 2 = -4.

Во-вторых, оператор ** был широко представлен в FORTRAN long давно. В FORTRAN -2 ** 2 также равно -4.

1
ответ дан 4 December 2019 в 07:35
поделиться

Окамл не делает то же самое

# -12.0**2.0
  ;;
- : float = 144.

Это как-то странно ...

# -12.0**0.5;;
- : float = nan

Но посмотрите на эту ссылку ... порядок операций

-1
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: