Тот же фрагмент кода, который не запускается для нескольких тестов в онлайн-компиляторе, был принят на 100% после нескольких повторных отправок, КАК?

Это звучит натянуто, но на самом деле это Реально. По сути, я использовал хорошо известный Geeks for Geeks онлайн-компилятор для отправки кодов C++. К сожалению, моя отправка не удалась, так как компилятор показал, что мой код не работает должным образом для некоторых тестовых случаев, затем я перепроверил свой код и не обнаружил никаких проблем, поэтому я отправил тот же код, как есть, без изменения ни единого бита (бессознательно), и я я потрясен, увидев, что мой код правильно выполняет все тестовые случаи за это время. Теперь я хочу знать, как это возможно? Это проблема компилятора или что-то еще?

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

Программы C++ могут иметь неопределенное и неопределенное поведение. Первое означает, что выход потенциально может быть любым, а второе означает, что может быть получено несколько разрешенных результатов. Нет причин, по которым программа с одним и тем же входом всегда должна выдавать один и тот же результат. Кроме того, мы, конечно, не знаем, что сайт делает с вашей заявкой. Есть ли основания полагать, что они всегда компилируют одно и то же, тестируют одни и те же тестовые случаи в одной и той же среде и т. д.? В общем, мы не можем этого знать, но это и не удивительно.

user17732522 15.04.2023 15:20

В этом вопросе нет ошибок компилятора, тег удален.

n. m. 15.04.2023 17:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш отправленный код, вероятно, имеет неопределенное или неопределенное поведение.

Когда ваш код вызывает такое поведение, существует множество возможных факторов, которые могут привести к тому, что ваш код будет вести себя иначе, чем при предыдущем запуске того же кода.

Например, адреса могут меняться каждый раз, когда вы запускаете программу, благодаря рандомизации адресного пространства (ASLR). Как следствие, доступ к массиву за пределами границ на определенную величину может вызвать сбой страницы в некоторых случайных макетах памяти, но не в других.

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

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

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

Другие вопросы по теме