2012-02-03 2 views
1

В настоящее время я изучаю программирование на языке С (мой первый язык программирования). Я немного путаюсь с приоритетом операторов. Арифметические приоритеты операторов заключаются в следующем.Приоритет операторов в программировании на языке С

  1. *
  2. /
  3. %
  4. +
  5. -

Это то, что дано в моей книге по крайней мере. Что меня смущает, так это о том, как я могу решить выражения, когда речь заходит о моих теоретических экзаменах? Я попытался решить многие из выражений с приведенным выше порядком, но не смог получить правильный ответ.

Учитывая следующие определения:

int a = 10, b = 20, c; 

Как мы решим это выражение?

a + 4/6 * 6/2 

Это пример из моей книги.

+0

Я никогда не слышал о \ operator. Вы уверены, что изучаете C, а не PHP? –

+0

@KerrekSB Черт! который должен был быть '/'. Извини, смутился. Учились с утра. – 912M0FR34K

+2

@ 912M0FR34K: Тогда пришло время перерыва! Программирование - все о педантичности и внимании к деталям. Прогуляйтесь и выпейте кофе, и после этого все будет легче. –

ответ

4
a + 4/6 * 6/2 
= 10 + 4/6 * 6/2 
= 10 + 0*6/2 
= 10 + 0/2 
= 10 

4/6 Обратите внимание, что имеет значение 0, как используется целочисленное деление.

+1

А, это то, что OP означало под «решением выражения» !! : D +1 –

2

Одно безопасное решение в реальной жизни, чтобы всегда использовать круглые скобки()

+0

То есть, когда я делаю программу.Но я просто могу просто добавить круглые скобки в своей бумаге для экзаменов? Спасибо за предложение. Оценил. – 912M0FR34K

+0

Я бы добавил их на экзамен :) – andreadi

4

Старшинство / и * то же самое в 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 

общая хорошая практика кодирования быть четко о своих намерениях. В частности, в скобках, когда есть сомнения. И иногда даже тогда, когда вы этого не делаете.

Смежные вопросы