НП
Наталия Пучинина

си шарп всё равно не пойму, почему выводит 11, а не 12. объяснит кто нибудь

int k = 5;
k = k++ +k++;
Console.WriteLine(k);

я так понимаю к=5+5=10, потом 10+1=11, потом 11+1=12. а выводит 11

мне кажется, что очерёдность действий в интерпретаторе после к=5+5=10 не определена, какой инкремент первым инкриминировать и происходит просто прибавление единицы.

using System;
class ShowBits {
public static void Main() {

int k = 5;
k = k++ +k;
Console.WriteLine(k);

}
}
так тоже 11

а так десять, значит последний инкремент не работает
using System;
class ShowBits {
public static void Main() {

int k = 5;
k = k + k++;
Console.WriteLine(k);

}
}

так 5
using System;
class ShowBits {
public static void Main() {

int k = 5;
k = k++;
Console.WriteLine(k);

}
}

5
5
using System;
class ShowBits {
public static void Main() {

int k = 5, v=5;
k =k++;
v = k;
Console.WriteLine(k);
Console.WriteLine(v);
}
}

Натусик
Натусик

потому что k++ -постфиксный оператор. он изменяет значение переменной ПОСЛЕ обработки каждого выражения.

КМ
Кристина Минеева

а че не используешь цикл for?

ВБ
Виталий Баранецкий

Был бы это с++, можно было бы посмотреть в отладчике на ассемблере, что и как происходит. У меня смутное подозрение, что из-за оптимизации происходит только одно увеличение (ну тут несложно было догадатся) , а второе либо теряется, либо вообще не происходит.

АХАХА. Заменил int на свой класс, который умеет складывать и инкрементировать и получил 14 :)))

Похожие вопросы
по си шарп, здесь в тексте ошибка?
что это я зделал? си шарп
подскажите по Си шарпу
Как изменить кодировку в Си шарп
Как программе удалить себя? Си шарп
Как написать программу Си Шарп?
Пошлите пожалуйста си шарп
ни чё не пойму . в си шарп. переполнение почему+
си шарп, не пойму почему без ref нельзя присвоить объект объекту в методе? там же ссылка в переменной всё равно
тут ошибка в учебнике по си шарп?