У меня есть 2 вопроса.
рассмотреть этот код:приоритет приращения и добавления операторов, cpp
int x=1,y=2;
int z =(x++)+(++y);
int w = (++x)++;
cout << z << "\t" << w << "\t" << x;
Теперь, это дает мне 4, 3 и 4, и я предполагаю, что w=3
потому, что это int w = (++x)++
не определено поведение, и это хорошо со мной. Что я не понимаю, так это: я попытался написать эту строку int w = (++x)++;
вот так int w = ++x++;
и получил error: lvalue required as increment operand
, но я увидел here, что постфикс имеет приоритет над префиксом, поэтому почему это не пошаговое приращение, возвращает переменную и затем увеличивает его с помощью префикса? (как это делается при использовании кронштейна)
Вернитесь к этой строке: int z =(x++)+(++y)
. Я попытался написать его как int z =x+++++y
, и это не сработало - такая же ошибка. Тогда я попытался int z =x+++(++y)
, и это было хорошо, так что я думаю, что произошло это:
- х ++
- ++ у
- аддитивные
но если я правильно, почему скобки были нужны? это так, как должно быть по приоритету
.. и почему вы это делаете? –
@ KarolyHorvath для лучшего понимания – CIsForCookies
Здесь не о чем говорить, просто ПОЖАЛУЙСТА, никогда не делайте этого! –