Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Почему в разных компиляторах код выводит разные значения? [закрыт]

#cpp


        
             
                
                    
                        
                            Закрыт. Этот вопрос не по теме. Ответы на него в данный
момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Переформулируйте вопрос,
чтобы он соответствовал тематике «Stack Overflow на русском».
                        
                        Закрыт 2 года назад.
                                                                                
           
                
        

http://rextester.com/ZZGGK27907
http://rextester.com/IGXLV67756


В данных ссылках один и тот же код. Но отличается для компиляторов C++ и C++11. В
C++ ответ выводится верный. А в C++11 выводится просто 0. По идее, C++ и C++11 не должны
сильно отличаться.

Почему может выводится разный ответ в одинаковых кодах? И где может быть ошибка? 
    


Ответы

Ответ 1



Не сильно вдавался в алгоритмические подробности, но как минимум одно проблемное место нашел: stack path; for(int index = Q.front().idx; index != -1; ) { ... Я попробовал прогнать ваш код на указанном наборе входных данных и обнаружил, что к указанному моменту очередь Q оказывается пуста (не углублялся, должно так быть или нет). Соответственно Q.front().idx обращается к первому элементу пустой очереди. В результате возникает неопределенное поведение. А раз оно неопределенное, то, в зависимости от компилятора, программа ведет себя по разному. Как-то вам нужно этот момент корректно обойти или (если он - не то что вы ожидали), починить код до указанного.

Комментариев нет:

Отправить комментарий