Премини към съдържанието

Препоръчан отговор


Здравейте. Някой може ли да ми обясни каква е разликата между i++ и ++i ? Например в следния код:

int number = 3;

Consоle.WriteLine(number++);
Console.WriteLine(++number);

От първото ще изведе 3 на конзолата, а от второто 5, но не мога да разбера как работи ???

 

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

преди 26 минути, _xSuNnYbGx_ написа:

 

Здравейте. Някой може ли да ми обясни каква е разликата между i++ и ++i ? Например в следния код:

 

int number = 3;

Consоle.WriteLine(number++);
Console.WriteLine(++number);

От първото ще изведе 3 на конзолата, а от второто 5, но не мога да разбера как работи ???

 

 

Pre-increment and pre-decrement operators increments or decrements the value of the object and returns a reference to the result.

Post-increment and post-decrement creates a copy of the object, increments or decrements the value of the object and returns the copy from before the increment or decrement.

 

Или казано на български при number++, първо се създава копие на обекта после се увеличава с 1 и накрая получаваш копие на обекта преди да се увеличи с 1. А при префикснатото веднага ти прави увеличението и след това ти връща резултата след промените 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

В случая и първия път ти се извежда 4, защото увеличаваш променливата number с 1.
След, като number = 4, като направиш ++number стойността и се увеличава пак с 1-ца и вече number = 5;

 

Иначе,

int firstNumber = 1;
Console.WriteLine(firstNumber++);  // firstNumber вече ще има стойност 2

int secondNumber = 1;
Console.WriteLine(++secondNumber); // secondNumber променливата пак ще има стойност 2

Просто си го направил с една и съща променлива и затова, може да се объркваш, как така number = 3; number++ да е 5.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Окей значи:

int num = 3;

Console.WriteLine(num++); // Ще изпринти първо 3 и тогава ще направи събирането.

Console.WriteLine(num); // Сега ще изпринти 4 защото е извършено събирането горе.

///////

ConsoleWriteLine(++num); Ще изпринти 4 и ще извърши събиране. защото първо събира и после изпринтва променливата.

Console.WriteLine(num); Пак ще върни 4, защото вече е събрано

 

Та, правилно ли го разбрах ?

Редактирано от _xSuNnYbGx_ (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Да, правилно си го разбрал.
Най-добре, когато не ти е ясно, защо нещо се получава по друг начин, а не както мислиш, или би искал ти, си пусни дебъгера, ако програмираш с Visual Studio, или някоя друга интегрирана среда за разработка.
Ако програмираш през конзолата е добра да си инсталираш ИДЕ, за да се начиш да дебъгваш.
Успех.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.