Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 67

Инкремент значения переменной

03.10.2013, 21:52. Показов 3082. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, разъясните пожалуйста ответ компилятора
C#
1
2
3
int i = 3;
            int y = ++i + i++ + i++ + ++i + ++i + i++;
            Console.WriteLine(y);
Почему получается 36...я как ни кручу получается 29??????
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2013, 21:52
Ответы с готовыми решениями:

Инкремент значения строки
Здравствуйте! Есть строка AB нужно увеличить эти символы в лексикографическом значении: например АВ + 2 = AD При переходе через...

Как присвоить значение переменной, исходя из значения другой переменной?
Всем привет. Нужна помощь. Есть переменная, например "month" которая может принимать значения от 01 до 12, и переменная...

Неожиданный результат при выводе значения переменной, несмотря на инкремент
подскажите почему значения a и с начинаются с 1 а не с 2 стоит же "++" int a = 1; void f() { int b = 1; // инициализируется...

34
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
03.10.2013, 23:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ultim Посмотреть сообщение
то есть во втором операторе он как бы выполняет две функции...это ни Троелсен ни Шилдт не поняли бы...
Какие еще две функции?

Сперва разберитесь с простейшим примером

// int y = ++i + 1; // будет 5 (сперва увеличение i, потом действие с числом)
// int y = i++ + 1; // будет 4 (сперва действие с числом, потом увеличение i)
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
03.10.2013, 23:01
UDP:
Правило номер один гласит, что код который вы написали, в первую очередь, должен быть понятен вам.
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 67
03.10.2013, 23:02  [ТС]
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Да просто никто так программы не пишет )))))))))
зато есть тесты такие
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
03.10.2013, 23:03
Цитата Сообщение от ultim Посмотреть сообщение
зато есть тесты такие
Тесты на прочность психики??))))
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
03.10.2013, 23:03
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Да просто никто так программы не пишет )))))))))
Это пример на понимание. Причем тут реальные программы?
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 67
03.10.2013, 23:06  [ТС]
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Тесты на прочность психики??))))
о дааа кстати реально один из 20 выполнил точно
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
03.10.2013, 23:12
ultim, почему сразу не расписать себе так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
static void Main()
        {
            int i = 3;
            // int y = ++i + i++ + i++ + ++i + ++i + i++;
            int y = 0;
 
            y = y + ++i;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + i++;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + i++;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + ++i;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + ++i;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + i++;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            Console.ReadLine();
        }
За то время, что вы здесь на трёх страницах спрашиваете/отвечаете уже можно было главу Шилдта прочесть...
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
03.10.2013, 23:13
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Правило номер один гласит, что код который вы написали, в первую очередь, должен быть понятен вам.
Ложный посыл.

В первую очередь код должен быть понятен другому программисту. Иначе, после года забвения, вы его и сами хрен поймете
2
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 67
03.10.2013, 23:34  [ТС]
Цитата Сообщение от memphis Посмотреть сообщение
ultim, почему сразу не расписать себе так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
static void Main()
        {
            int i = 3;
            // int y = ++i + i++ + i++ + ++i + ++i + i++;
            int y = 0;
 
            y = y + ++i;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + i++;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + i++;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + ++i;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + ++i;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            y = y + i++;
            Console.WriteLine("y = {0}, i = {1}", y, i);
            Console.WriteLine();
 
            Console.ReadLine();
        }
За то время, что вы здесь на трёх страницах спрашиваете/отвечаете уже можно было главу Шилдта прочесть...
так тут всем всё понятно но в книге описывается int i=3 если так ++i то i=4 если так i++ то i всё ещё равно 3...а у нас получается во втором по счёту i уже 5 хотя по логике должно быть ещё 4

Добавлено через 5 минут
хрен поймёшь называется
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
03.10.2013, 23:37
Цитата Сообщение от Евгений В Посмотреть сообщение
В первую очередь код должен быть понятен другому программисту. Иначе, после года забвения, вы его и сами хрен поймете
Согласен, это то же важно.
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
03.10.2013, 23:47
Цитата Сообщение от ultim Посмотреть сообщение
логике должно быть ещё 4


первое действие: сперва i увеличивается на единицу , а потом идет сложение
y = y + ++i; в выражении i=4,

второе действие:сперва сложение, потом увеличение i
y = y + i++; в выражении i=4, затем становится 5
0
117 / 117 / 0
Регистрация: 27.09.2013
Сообщений: 710
03.10.2013, 23:59
Ещё раз хочется добавить, что приоритет операторов зависит от компилятора. Я проверял i++ на разных языках, и результат в большинстве совпадает, но нужно помнить, что это не догма. А лучше перечитать раздел учебника - приоритеты операторов
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
04.10.2013, 00:22
Да ничего тут хитрого нет, операции выполняются тупо слева направо. Главное про текущий результат и про пост/пре-инкремент тоже не забывать:
++i + i++ + i++ + ++i + ++i + i++;

1. i = 3
2. i + 1 = 4
3. 4 + 4 = 8
4. i + 1 = 5
6. 8 + 5 = 13
7. i + 1 = 6
8. i + 1 = 7
9. 13 + 7 = 20
10. i + 1 = 8
11. 20 + 8 = 28
12. 28 + 8 = 36
13. i + 1 = 9
1
0 / 0 / 1
Регистрация: 21.09.2011
Сообщений: 23
04.10.2013, 00:48
Как вариант:

_3____5____6____7____8 - инкремент
++i + i++ + i++ + ++i + ++i + i++
__4__4____5______7____8__8 = (36) - значение переменной
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
04.10.2013, 01:01
лучше всяких там слов
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  IL_0001:  ldc.i4.3   
  IL_0002:  stloc.0     
  IL_0003:  ldloc.0    
  IL_0004:  ldc.i4.1   
  IL_0005:  add
  IL_0006:  dup
  IL_0007:  stloc.0   
  IL_0008:  ldloc.0
  IL_0009:  dup
  IL_000a:  ldc.i4.1   
  IL_000b:  add
  IL_000c:  stloc.0    
  IL_000d:  add
  IL_000e:  ldloc.0
  IL_000f:  dup
  IL_0010:  ldc.i4.1
  IL_0011:  add
  IL_0012:  stloc.0
  IL_0013:  add
  IL_0014:  ldloc.0
  IL_0015:  ldc.i4.1
  IL_0016:  add
  IL_0017:  dup
  IL_0018:  stloc.0
  IL_0019:  add
  IL_001a:  ldloc.0
  IL_001b:  ldc.i4.1
  IL_001c:  add
  IL_001d:  dup
  IL_001e:  stloc.0
  IL_001f:  add
  IL_0020:  ldloc.0
  IL_0021:  add
  IL_0022:  stloc.1
  IL_0023:  ldloc.1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2013, 01:01

Инкремент переменной
в задании сказано, что пользователь вводит строку и программа выводит ее, но если пользователь вводит еще и цифру, то программа должна...

Инкремент переменной
Всем привет! Есть такой код: <div class="box"> <?php $moveCounter = 0; //... ...

Инкремент переменной в рекурсии
Здравствуйте форумчане, что то не приходит идея как сделать в рекурсивном методе переменную, чтобы на следующем входе в функцию она не...

Инкремент переменной префаба
Пытаюсь инкрементировать переменную, которая в скрипте EnemyScript, который в префабе Enemy.. NullReferenceException: Object...

Странно работает инкремент переменной
Делаю скрипт-викторину, фронтэнд представляет из себя таблицу в 4 столбца, первый-название, следующие 3 - формы. При нажатии кнопки скрипт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru