Member 13906667 Ответов: 2

Что такое оператор i++ и ++i, как они работают


#include<bits/stdc++.h>
использование пространства имен std;

тап_п()
{
int i = 5;

int ans = (i++) *(++i);

cout << ans << endl;

возвращает 0;
}

Этот код выдает вывод 35 и я не могу понять что там происходит

Что я уже пробовал:

я ничего не могу попробовать в этом, я не могу найти решение для этого

Mehdi Gholam

35 = 5 * 7, подумайте сами.

Member 13906667

как же так???

2 Ответов

Рейтинг:
10

Gerry Schmitz

Работает до:

int ans = i * ((i+1)+1);

Первое "i" равно 5; "вторая ссылка" на "i" получает i++, а затем ++i (7) перед вычислением"*".

Порядок имеет значение; в противном случае вы получите 36.


Member 13906667

насчет (я++)*(++я)

Gerry Schmitz

Ну и что с того?

Я сказал "порядок имеет значение", и в этом случае ответ-36.

(i++ - это "последний"; так что его (6 * 6); причем i заканчивается как 7 (снова); но после того, как вычисляется "ans".

Рейтинг:
1

OriginalGriff

В принципе, не делайте этого!
Видеть здесь: Почему x = ++x + x++ дает мне неправильный ответ?[^]