--m(++m) – Постдекремент(постинкремент)

samich

New Member
14.01.2012
1
0
#1
дело вот в чем
--m(++m) – постдекремент(постинкремент) ( уменьшение (увеличение) m на единицу после операции)
n++(n--) - инкремент (декремент) (увеличение (уменьшение) n на единицу в момент выполнения операции)
если стоит после буквы то надо - + в момент операции а если перед то после
так вот если у меня пример в котором сложени или вычитание ( комп так и считает )
пример
setlocale(LC_ALL, "russian");
int n,m,result;
cout<<"Введите n ";
cin>>n;
cout<<"Введите m ";
cin>>m;
result=--m-n++;
cout<<"m="<<m<<" n="<<n<<" --m-n++="<<result<<"\n";
system("pause");
return 0;
если ввести n5 m6 то получится
n6 m5 а в примере 6-6=0, вроде как и описанно выше

а если тоже самое сделать с умножением или делением то получается наоборот
setlocale(LC_ALL, "russian");
int n,m,result;
cout<<"Введите n ";
cin>>n;
cout<<"Введите m ";
cin>>m;
result=--m*n++;
cout<<"m="<<m<<" n="<<n<<" --m*n++="<<result<<"\n";
system("pause");
return 0;
если ввести n5 m6 то получится
n6 m5 а в примере 5*5=25,

хотя по моему он должен был наоборот n увеличить,а m оставить таким как он есть то есть 6*6=36.
Потому что при сложении и вычитании он как раз так и делал.
Может я немного не догоняю или не правильно что то записал помогите с решением этой проблемы
 

samich

New Member
14.01.2012
1
0
#3
правильно ли обрабатывается логаритм. Если да то почему при сложении или вычитании он решает пример правильно ( если читать определение по книжке). А если умножать или делить то он решает наоборот? ( изходя все из того же определения ). Или где можно по подробнее об этом почитать
 

Vadik(R)

Well-Known Member
12.12.2007
469
0
#4
Где-то читал, что это зависит от настроек компилятора, в какой последовательности будут обрабатываться эти операторы.
Хотя, по моему предположению, результат должен быть всё равно 30, не знаю, почему в книжке 25.
 

samich

New Member
14.01.2012
1
0
#5
ну не 30 а 36. Но суть остаеться та же. Может формулу при умножении и делении по другому записывать надо и компилятор будет правильно обробатывать пример.
ПРосто лабу надо здавать, в итоге как работает программа в одном случае ( при сложениии и вычитании ) я буду говорить одно, а при умножении и делении буду сам себе противоречить.
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#6
Самая первая строка:
--m(++m) – постдекремент(постинкремент) ( уменьшение (увеличение) m на единицу после операции)
все на самом деле в точности до наоборот.
 

samich

New Member
14.01.2012
1
0
#7
Можно по подробнее. Тогда скажите почему при умножении одно а при вычитании сложении на оборот? Меня вот именно это и интересует.