Другие языки программирования и технологии

C#. ++x или x++ В чем разница при записи инкремента этими двумя способами?

using System;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int x = 0, y = 0;

Console.WriteLine(x++);
Console.WriteLine(++y);
Console.ReadKey();
}
}
}

Этот код сам за себя всё скажет!!!
Сергей Фото-Видео
Сергей Фото-Видео
65 160
Лучший ответ
Просто разный приоритет!
Надо смотреть таблицу приоритетов, префиксный инкремент (++x) имеет высший приоритет, а постфиксный инкремент (x++) - низший приоритет! И в комплексе остальных операций в выражении можно следить, что делается первым действием, что вторым и т. д. Соответственно вывод, присвоение и некоторые другие операции в комплексе с разными инкрементами будут давать разные результаты!
Виктор Лапиков В смысле приоритетов Вы правы, но в учебниках обычно X++ и ++X обозначались одинаковым приоритетом.
Спасибо хза уточнение.
Нужно видеть последовательность операций. Иногда из- за побочного влияния этих операций разница ощутима. Например в примере Сергея есть двуместная операция сложения и действия над операндами делаются ДО или ПОСЛЕ операции.
А вот в таком цикле неважно, так как выполняется ОДНОМЕСТНАЯ операция:
for(int I=0;I < 10;I++) printf("%d",I);
printf("\n");
for(int I=0;I < 10;++I) printf("%d",I);
Aaa Aaa
Aaa Aaa
35 996
Талант Ашым Уулу Можно и так:
for(int I=0;I < 10;) printf("%d ",I++);
printf("\n");
for(int I=0;I < 10;) printf("%d ",++I);
в первом варианте сначала осуществляется инкремент, а потом операции с переменной, во втором варианте - наоборот. потести:
int a,b,c;
a=1,b=1;
c = ++a + ++b; printf("%d = %d + %d\n",c,a,b);
a=1,b=1;
c = a++ +b++; printf("%d = %d + %d\n",c,a,b);
Федор Попов
Федор Попов
4 250
Одна форма записи префиксная, другая - постфиксная.. .
Разница ощутима, если работаешь в цикле, скажем, for
x++ -значение прибавится на еденицу сразу же.. .
++x - значение прибавится на еденицу за следующим циклом.. .
Бауржан Калиев в корне неверно.
Aaa Aaa Бред написал.Как раз в записи for(int I=0;I < 10;I++) cout I;
И таком же префиксном разницы нет.
Виктор Лапиков Бред написал.
++x префиксная форма, вначале увеличивается х, а затем используется в вычислениях как х.

x++ постфиксная форма, вначале используется в вычислениях как х, а затем х увеличивается.

В операторе цикла for декрементация работает одинаково, поскольку обычно декрементация происходит только между циклами,
когда не происходит никаких вычислений с х.
Если же внутри цикла есть терм (операция) с дополнительная декрементация одного из видов, то это относится только к этому терму. Ясно, что в этом случае х делает лишний скачок и число циклов уменьшается по сравнению с обычным.
Aaa Aaa Не обижайся,я не хотел оценку ставить)). Получилась 5 за" участие".
Ну это примерно так:
for (int i=0; i < 10;)
{
...
i++;
}
или
for (int i=0; i < 10;)
{
...
++i;
}
Так как эти унарные операции применены в ОДНОМЕСТНОЙ операции,то никакой разницы не будет,можешь их записать в for:
for (int i=0; i < 10;i++){}
или
for (int i=0; i < 10;++i){}
Разницы особой нету, я всегда в циклах использую ++х, где-то читал что это работает быстрее, вроде на хабре.
S$
Sergio... $$$
210