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

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

--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

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

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