#include <iostream>
int main()
{
int a =1,b;
b = ++a*a++;
std :: cout<< b << std::endl;
return 0;
}
Объясните почему тут 6, а не 4?
Возможно это выполнилось следующим образом (по шагам):
++a * a++ //Значение a = 1;&a * a++ Префиксный инкремент увеличил значение "a" и вернул на нее ссылку (Обозначим, как &а). //Значение a = 2;&a * 2 Постфиксный инкремент вернул текущее значение переменной (т.е. 2) и увеличил значение "a". //Значение a = 3;3 * 2 = 6;
warning: multiple unsequenced modifications to 'a'. Это неопределенное поведение. – HolyBlackCat Mar 15 '23 at 22:35