none
Не понимаю по каким причинам программа не входит в оператор if и как эту ситуация исправлять RRS feed

  • Общие обсуждения

  • В операторе if стоит условие, которое в данный момент true. Почему-то вложенные операторы программа не выполняет.

    Вот фото в процессе трассировки. Видно, что условие в if true, а оператор добавления в iSumm 1 не выполняется.

    3 марта 2015 г. 8:56

Все ответы

  • Во-первых, на Вашем скриншоте не видно текущего значения iSumm, поэтому сделать вывод о том, модифицировалось оно, или нет, невозможно.

    Во-вторых, если уж Вы умеете пользоваться отладчиком, могли бы и сами выяснить с помощью пошаговой отладки, попадает поток управления на этот оператор, или нет.

    И, в-третьих, если Вы пытаетесь отлаживать конфигурацию Release (у которой включена оптимизация), то доверять пошаговой отладке и значениям переменных в окнах отладчика вообще нельзя.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    3 марта 2015 г. 10:33
  • Как это не видно. Возле каждого упоминания iSumm, где оно рассчитывается, стоит значение.

    На этот оператор if - попадает. По картинке видно - раз расчитал значение в if, значит попал (иначе даже не расчитывал бы), и в операторе if показывает true, а внутренюю часть не выполняет...

    3 марта 2015 г. 10:58
  • Возле каждого упоминания iSumm, где оно рассчитывается, стоит значение.

    Да, да, теперь рассмотрел :) Однако, увидел и то, что отлаживаемая Вами конфигурация - действительно "Release"! Чего же Вы хотите? Отлаживать нужно Debug (или оптимизацию в настройках проекта выключать).

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    3 марта 2015 г. 11:05
  • Я хочу, что б в если в операторе if стоит true, то выполнялась вложенное в оператор. Причем отладку я начала запускать, когда в if  не вошли. Не входит и при запуске без отладки и с отладкой.

    3 марта 2015 г. 11:51
  • А я хочу донести до Вас мысль от том, что оптимизированный компилятором код отлаживать затруднительно. У него НЕТ четкого соответствия между машинным кодом (в данном случае IL-кодом) и строкой в исходном файле!

    Для любого проекта Visual Studio обычно создает две конфигурации (Release и Debug). И первую, и вторую можно запустить как в режиме отладки, так и без нее. Кроме того, и к первой и второй можно подключить отладчик в любой момент. Но ОТЛАЖИВАТЬ лучше конфигурацию Debug, а не Release.

    Если запуск конфигурации Debug по каким-то причинам не возможен, организуйте протоколирование работы кода (например при помощи класса Trace) и увидите, что у Вас выполняется, а что нет.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    3 марта 2015 г. 14:01