Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
nkei
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 4
#1

проблема - при выводе переменных, их значения изменяются - C++

19.12.2011, 14:47. Просмотров 505. Ответов 5
Метки нет (Все метки)

Проблема в элементарном коде, после присваивания переменной `result1` значения `n+++m--`, значения `n` и `m`, тоже изменяются, что за ерунда?? Допустим вводим `n=2` и `m=3`, после присваивания `result1=n+++m--`, `n=3`, а `m=2`. Это лабораторная по C++, в основном пишу на С#, таких проблем не было.
C++
1
2
3
4
5
6
7
8
9
10
11
12
float m, n, x, result, result1, result2;
 
    cout << "Введите n: ";
    cin >> n; // ввод m
 
    cout << "Введите m: ";
    cin >> m; // ввод n
 
    printf("n= %.2f m= %.2f\n\n", n, m);
 
    result1 = n+++m--;
    cout << "n+++m--= " << result1; // вывод m+++n--
изначально код был такой, но результат тот же:
C++
1
2
3
4
5
6
7
8
9
10
float m, n, x, result, result1, result2;
 
    cout << "Введите n: ";
    cin >> n; // ввод m
 
    cout << "Введите m: ";
    cin >> m; // ввод n
 
    printf("n= %.2f m= %.2f\n", n, m);
    printf("n+++m--= %.2f", n+++m--); // вывод m+++n--
Знаю проблема совсем глупая, но я уже уйму времени потратил переделывая код...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 14:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос проблема - при выводе переменных, их значения изменяются (C++):

Почему при компилировании программы со вторым экземпляром класса изменяются значения первого?
Здравствуйте. Вопрос: почему при компилировании программы со вторым...

Ошибка при выводе значения
Здравствуйте,решая задание: Вычислить рекурсивно и нерекурсивно произведение...

Почему при выводе значения переменной выводиться inf?
При выводе z выводится inf #include &lt;iostream&gt; void main() { double...

Неожиданный результат при выводе значения переменной, несмотря на инкремент
подскажите почему значения a и с начинаются с 1 а не с 2 стоит же &quot;++&quot; int a...

Приведение типов. Должны получиться другие значения при выводе в консоль. x[0]=0,0682
#include &lt;cmath&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt;...

Не изменяются значения в массиве
Здравствуйте, подскажите пожалуйста, не работает кусочек программы не изменяет...

5
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.12.2011, 14:53 #2
Цитата Сообщение от nkei Посмотреть сообщение
значения `n+++m--`, значения `n` и `m`, тоже изменяются, что за ерунда?
Так и должно быть. Запись `n++` в некотором роде аналогична записи `n = n + 1`, а `m--` соответственно `m = m - 1`.
0
dino-4udo
-5 / 6 / 4
Регистрация: 16.12.2010
Сообщений: 68
19.12.2011, 14:53 #3
Это называется инкремент и декремент
0
nkei
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 4
19.12.2011, 15:08  [ТС] #4
Да насчёт инкремент и декремент понял)) Просто я думал что если:
C++
1
2
float n=3;
n++;
то `n` станет равно 4. А если
C++
1
2
3
float n=3;
float result;
result = n++;
то `result` будет равно 4, а `n` не изменится, останется равным 3.
Получается нужно присваивать изначальные данные темповским переменным и работать только с ними?
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
19.12.2011, 15:10 #5
Цитата Сообщение от nkei Посмотреть сообщение
`result` будет равно 4, а `n` не изменится, останется равным 3.
при записи
Цитата Сообщение от nkei Посмотреть сообщение
result = n++;
result будет равно 3, а n станет равно 4.
0
nkei
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 4
19.12.2011, 15:29  [ТС] #6
Цитата Сообщение от easybudda Посмотреть сообщение
при записи

result будет равно 3, а n станет равно 4.
Да действительно.

Напишите пожалуйста, для наглядности, как правильно оформить задачу:

`n`, `m` вводятся с клавиатуры. Вывести `n=`, `m=`, `n+++m--=`. Вывести больше или меньше `n*m` или `n++`.
0
19.12.2011, 15:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 15:29
Привет! Вот еще темы с решениями:

Поменять местами значения целых переменных х и у не используя дополнительных переменных
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста...

При работе с вектором изменяются адреса элементов
Здравствуйте. В соответствии с правилами создаю новую тему, хотя вопрос имеет...

Std::count << std::hex << (long) 0x0a; Как сделать, чтоб от HEX значения ноль при выводе не убирался?
сабж...( std::count &lt;&lt; std::hex &lt;&lt; (long) 0x0a; ) выводится просто a, вместо...

Почему в выводе массива нет введенного значения
Добрый день. Разъясните пожалуйста, почему в выводе массива на экран, нет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru