Приоритет /
и *
такой же в C, как и в математике.Проблема в том, что в математике следующие выражения эквивалентны, тогда как в C они могут не быть:
(a/b) * (c/d)
(a/b*c) / d
Они не эквивалентны в C, потому что если a
, b
, c
и d
- целые числа, оператор /
означает целочисленное деление (оно дает только интегральную часть результата).
Например,
(7/2)*(4/5); //yelds 0, because 4/5 == 0
(7/2*4)/5; //yields 2
Общая хорошая практика кодирования заключается в явном указании ваших намерений.В частности, заключите в скобки, если сомневаетесь.А иногда даже когда тебя нет.