Для умножения и деления в C ++, какова причина использования «./» или «. *» Против «/» или «*»? - PullRequest
0 голосов
/ 16 апреля 2020

Я прохожу некоторый код C ++, чтобы определить, как он работает (я сам пока не очень хорошо знаю язык), и я наткнулся на несколько строк, которые выглядят так:

  bw = 2.*ti/3.;           rorq = ((bw/to)**(1./q));

Есть ли какая-то конкретная причина, по которой код будет использовать. * ti вместо * ti? Это как-то связано с переменными?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2020

Во-первых, это недопустимый код C ++:

rorq = ((bw/to)**(1./q));  

В языке C ++ нет оператора **.

При разборе выражений существуют правила приоритет . «.» присоединяется к числу. Добавление правильных пробелов:

bw = 2. * ti/3. ;
rorq = ((bw / to) ** (1. / q));  

Чтобы предотвратить неоднозначность, большинство программистов на C ++ добавляют десятичную точку после десятичной точки:

bw = 2.0 * ti / 3.0 ;
rorq = ((bw / to) ** (1.0 / q));  

.0 часто добавляется, чтобы вызвать целое число константа с плавающей запятой. Также можно использовать суффикс 'f':

bw = 2f * ti / 3f ;
rorq = ((bw / to) ** (1f / q));  
1 голос
/ 16 апреля 2020

Это совсем не похоже на C ++.

Что касается моего кэша языков программирования, точки в bw = 2.*ti/3.; будут представлять поэлементные операции, используемые для умножения, деления и возведения в степень в matlab. Двойная звездочка ** в rorq = ((bw/to)**(1./q)); относится к возведению в степень в некоторых языках.

Относительно названия вопроса, умножения и деления выполняется только с использованием * и / соответственно в C ++. Вы также можете использовать операторы побитового сдвига << и >> для некоторых случаев.

...