• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы samich
  • Дата начала
S

samich

дело вот в чем
--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.
Потому что при сложении и вычитании он как раз так и делал.
Может я немного не догоняю или не правильно что то записал помогите с решением этой проблемы
 
S

samich

в чём конкретно вопрос?
правильно ли обрабатывается логаритм. Если да то почему при сложении или вычитании он решает пример правильно ( если читать определение по книжке). А если умножать или делить то он решает наоборот? ( изходя все из того же определения ). Или где можно по подробнее об этом почитать
 
V

Vadik(R)

Где-то читал, что это зависит от настроек компилятора, в какой последовательности будут обрабатываться эти операторы.
Хотя, по моему предположению, результат должен быть всё равно 30, не знаю, почему в книжке 25.
 
S

samich

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

samich

Можно по подробнее. Тогда скажите почему при умножении одно а при вычитании сложении на оборот? Меня вот именно это и интересует.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!