Форум программистов, компьютерный форум CyberForum.ru

Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
23.08.2011, 19:14     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
{
 
     setlocale(LC_ALL, "rus");
    
 
//////////////////////////////////////////////////////// 
    //Ïî÷åìó Г*ГҐ Г±Г°Г*ГЎГ*òûâГ*ГҐГІ Гў ïåðâîì ГўГ*ðèГ*Г*ГІГҐ?
 
 // 1  
    int n1 =3;
    ++n1; 
    int n2 =3;
    n2++;
    
    cout << "\n×èñëî ++n: " << n1;
    cout << "\n×èñëî n++: " << n2;
 
 // 2
    n1 =3;
    n2 =3;
    
    cout << "\n×èñëî ++n: " << ++n1;
    cout << "\n×èñëî n++: " << n2++;
////////////////////////////////////////////////////////    
    
    cout << endl;
    system("PAUSE");
    return 0;
Выполнение:
Миниатюры
Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2011, 19:14     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите.
Посмотрите здесь:

Постфиксная и префиксная форма инкремента и декремента. C++
C++ Использование инкремента(Декремента)
C++ Перегрузка оператора инкремента/декремента через friend
C++ Перегрузка операции инкремента
C++ Вывод в поток и операция инкремента / декремента
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
23.08.2011, 19:17     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. #2
Цитата Сообщение от KeyGen Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
{
 
     setlocale(LC_ALL, "rus");
    
 
//////////////////////////////////////////////////////// 
    //Ïî÷åìó Г*ГҐ Г±Г°Г*ГЎГ*òûâГ*ГҐГІ Гў ïåðâîì ГўГ*ðèГ*Г*ГІГҐ?
 
 // 1  
    int n1 =3;
    ++n1; 
    int n2 =3;
    n2++;
    
    cout << "\n×èñëî ++n: " << n1;
    cout << "\n×èñëî n++: " << n2;
 
 // 2
    n1 =3;
    n2 =3;
    
    cout << "\n×èñëî ++n: " << ++n1;
    cout << "\n×èñëî n++: " << n2++;
////////////////////////////////////////////////////////    
    
    cout << endl;
    system("PAUSE");
    return 0;
Что у вас не работает в первом варианте? Какой результат вы ожидали? Должно выдать на печать, что n1 и n2 равны 4., а во втором случае соответственно 4 и 3.
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
23.08.2011, 19:24  [ТС]     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. #3
Цитата из книги:
"... a++ означает "использовать значение а при вычислении, затем увеличить на единицу"...".
В первом варианте значение изменяется не зависимо от положение декремента, во втором не меняется n2 почему такая разница?
Сыроежка
Заблокирован
23.08.2011, 19:31     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. #4
Цитата Сообщение от KeyGen Посмотреть сообщение
Цитата из книги:
"... a++ означает "использовать значение а при вычислении, затем увеличить на единицу"...".
В первом варианте значение изменяется не зависимо от положение декремента, во втором не меняется n2 почему такая разница?
Потому что в первом выражении при завершении полного выражения имеется точка последовательности. Это означает, что побочные эффекты, то есть изменение n2 будет в этом месте завершено, то есть в переменную n2
будет записано инкриментированное выражение.
Во-втором случае будет именно так, как описано в вашей книге.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
23.08.2011, 19:35     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. #5
Цитата Сообщение от KeyGen Посмотреть сообщение
В первом варианте значение изменяется не зависимо от положение декремента, во втором не меняется n2 почему такая разница?
сам то как думаешь???
C++
1
2
3
4
5
int n1 =3;// здесь три
    ++n1; // здесь четыре
 int n2 =3;// здесь три
    n2++;  // здесь три до точки с запятой
              // а здесь уже четыре
Yandex
Объявления
23.08.2011, 19:35     Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите.
Ответ Создать тему
Опции темы

Текущее время: 09:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru