1 / 1 / 0
Регистрация: 26.03.2017
Сообщений: 40
1

Префиксная и постфиксная запись инкремента

29.03.2017, 20:53. Показов 4716. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int х = 1;
    int a = 0;
 
    a = ++х + ++х;
 
    cout << "a = " << a << endl;
 
    return 0;
}
на экране появляется а = 6
не могу понять почему 6 то? изначально х=1, затем первое его изменение (++х) и уже х=2 потом опять (++х) и х уже равен 3,
потом производится операция сложения 2 и 3. Почему выводится 6 ?

Объясните пожалуйста)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2017, 20:53
Ответы с готовыми решениями:

Постфиксная и префиксная форма инкремента и декремента.
Само задание: Написать программу с примерами постфиксной и префиксной формами инкремента и...

Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите.
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main () { ...

Префиксная польская запись
Здравствуйте, очень нужна помощь умных людей( Задача: Написать код для преобразования инфиксной...

Const методы суффиксная/префиксная запись
Какая разница между этими записями? const void Method(); void Method() const

6
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
29.03.2017, 20:57 2
Лучший ответ Сообщение было отмечено cvetkof как решение

Решение

потому что UB. Значение переменной нельзя менять несколько раз в пределах одной точки следования
1
Заблокирован
29.03.2017, 20:59 3
Цитата Сообщение от cvetkof Посмотреть сообщение
потом опять (++х) и х уже равен 3,
Цитата Сообщение от cvetkof Посмотреть сообщение
потом производится операция сложения 2 и 3
Ты же сам написал, что x стал равен трем. Так почему ты слева 2 оставил?
1
nd2
3433 / 2812 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.03.2017, 21:06 4
Лучший ответ Сообщение было отмечено cvetkof как решение

Решение

Цитата Сообщение от cvetkof Посмотреть сообщение
Объясните пожалуйста)
Сейчас это называется по-другому, но суть от этого не меняется.
http://alenacpp.blogspot.ru/20... oints.html
1
670 / 216 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
29.03.2017, 21:09 5
Цитата Сообщение от cvetkof Посмотреть сообщение
Почему выводится 6 ?
потому что 3 + 3 = 6
http://ru.cppreference.com/w/c... precedence
1
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
29.03.2017, 21:12 6
Цитата Сообщение от nimazzzy Посмотреть сообщение
Ты же сам написал, что x стал равен трем. Так почему ты слева 2 оставил?
Цитата Сообщение от dailydose Посмотреть сообщение
потому что 3 + 3 = 6
клэнг думает иначе)
http://rextester.com/IITH73238
1
Заблокирован
29.03.2017, 21:20 7
Цитата Сообщение от Selot Посмотреть сообщение
клэнг думает иначе)
потому что это ub Но вопрос был не в том, как думает клэнг, а "почему 6" )))
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2017, 21:20
Помогаю со студенческими работами здесь

постфиксная перегрузка поная запись
Здарова! создал класс Int2 как бы моделирующий int в нем решил перегрузить все операторы которые...

Не могу разобраться в чём ошибка(инфиксная и постфиксная запись выражения)
на вход для простоты подаю коротенько выражение меньше 10 символов цифры во входе тоже от 0 до 10...

I++ и ++i (Префиксная и постфиксная форма инкремента)
Префиксная и постфиксная форма инкремента. Когда писал на C++ как-то не задумывался о разнице, а...

Постфиксная и префиксная запись в выражении
Иметься такой код: int a = 3; printf(&quot;%d&quot;, (++a) * (++a)); // Выведет на экран 25 Вроде все...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru