Как настроить отладку в VS для наблюдения за операциями декремента и инкремента?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Как настроить отладку в VS для наблюдения за операциями декремента и инкремента?
|
Сообщ.
#1
,
|
|
|
|
![]() ![]() #include <stdio.h> void main() { int x = 1; x = x + x++; printf("%d", x); scanf_s("%d", &x); } Когда наблюдаю в отладчике за переменной x, то на строке x = x + x++; x сразу становится равным 3. Что сделать, чтобы увидеть конкретную последовательность действий где стало 2, а где 3, если это возможно. |
|
Сообщ.
#2
,
|
|
|
|
Цитата southern @ Поставить точку отладки на интересующую вас строку, а потом нажать Alt+8 или в глобальном меню выбрать Отладка\Окна\Дизассемблированный код. (если у вас русифицирована Что сделать, чтобы увидеть конкретную последовательность действий где стало 2, а где 3, если это возможно. ) |
|
Сообщ.
#3
,
|
|
|
|
Цитата southern @ Потому что отладчик сперва полностью выполняет оператор, и только потом делает останов, показывая содержимое переменных.Когда наблюдаю в отладчике за переменной x, то на строке x = x + x++; x сразу становится равным 3. Цитата southern @ В отладчике нет просмотра кода? Там можно посмотреть сгенерированную последовательность команд.Что сделать, чтобы увидеть конкретную последовательность действий где стало 2, а где 3, если это возможно. В современных компиляторах такая операция обычно даёт результаты, аналогичные последовательности ![]() ![]() x = x + x; x++; подозреваю, что ![]() ![]() x = ++x + x++; При вычислении выражения производится только инкремент/декремент указателей, когда он поддерживается аппаратно. |
|
Сообщ.
#4
,
|
|
|
|
|
Сообщ.
#5
,
|
|
|
|
Надо знать какой приоритет операций у компилятора. Например C# и С++ дают разный результаты.
|
|
Сообщ.
#6
,
|
|
|
|
Цитата Bas @ Это зависит не от приоритета операций. К тому же в C++ и C# конкретно эти операции имеют сходные приоритеты. Надо знать какой приоритет операций у компилятора. Например C# и С++ дают разный результаты. |
|
Сообщ.
#7
,
|
|
|
|
southern, цель какая?
Добавлено Цитата Bas @ Надо знать какой приоритет операций у компилятора Выше постом OpenGL ответил абсолютно исчерпывающе. |
|
Сообщ.
#8
,
|
|
|
|
Цитата shm @ Выше постом OpenGL ответил абсолютно исчерпывающе. А теперь освежим прочитаное - тесты от исходников.ру Мини-тест, Освежи свои знания. Мини-тест-B Мини-тест С, Дабы окончательно разобраться Конфуз |