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

Тема в разделе "C/C++/C#", создана пользователем samich, 14 янв 2012.

  1. samich

    samich New Member

    Регистрация:
    14 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    дело вот в чем
    --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.
    Потому что при сложении и вычитании он как раз так и делал.
    Может я немного не догоняю или не правильно что то записал помогите с решением этой проблемы
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    в чём конкретно вопрос?
     
  3. samich

    samich New Member

    Регистрация:
    14 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    правильно ли обрабатывается логаритм. Если да то почему при сложении или вычитании он решает пример правильно ( если читать определение по книжке). А если умножать или делить то он решает наоборот? ( изходя все из того же определения ). Или где можно по подробнее об этом почитать
     
  4. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Где-то читал, что это зависит от настроек компилятора, в какой последовательности будут обрабатываться эти операторы.
    Хотя, по моему предположению, результат должен быть всё равно 30, не знаю, почему в книжке 25.
     
  5. samich

    samich New Member

    Регистрация:
    14 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    ну не 30 а 36. Но суть остаеться та же. Может формулу при умножении и делении по другому записывать надо и компилятор будет правильно обробатывать пример.
    ПРосто лабу надо здавать, в итоге как работает программа в одном случае ( при сложениии и вычитании ) я буду говорить одно, а при умножении и делении буду сам себе противоречить.
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Самая первая строка:
    все на самом деле в точности до наоборот.
     
  7. samich

    samich New Member

    Регистрация:
    14 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    Можно по подробнее. Тогда скажите почему при умножении одно а при вычитании сложении на оборот? Меня вот именно это и интересует.
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Постинкремент: m++
    Постдекремент: m--
     
Загрузка...
Похожие Темы - m(++m) – Постдекремент(постинкремент)
  1. WebWare Team
    Ответов:
    0
    Просмотров:
    233
  2. jeckos
    Ответов:
    2
    Просмотров:
    72
  3. ghost
    Ответов:
    5
    Просмотров:
    270
  4. ghost
    Ответов:
    4
    Просмотров:
    1.010
  5. acs-nexus
    Ответов:
    0
    Просмотров:
    193

Поделиться этой страницей