Для всех действий, которые определяет стандарт, программы, созданные всеми компиляторами, должны вести себя одинаково.
Для всех случаев, когда стандарт не задан, компиляторы не должны вести себя одинаково. Стандарт не дает никаких гарантий относительно программ, которые нарушают стандарт, например. Стандарт также оставляет много деталей вплоть до реализации.
Кроме того, компиляторы обычно не всегда соответствуют стандарту во всех случаях, а некоторые компиляторы могут не поддерживать такую же версию стандарта, как и другие.
И, наконец, некоторые стандартные правила считаются неоднозначными, и разные компиляторы могут выбрать противоположную интерпретацию. Они должны быть задокументированы как defect reports.
.. семян ... функция Rand ...
случайная последовательность производства rand
определяется реализацией. Да, результаты могут отличаться от разных компиляторов.
C++ 11 введен <random>
заголовок. Из генераторов случайных чисел, определенных там, default_random_engine
является единственным, у которого есть поведение, определенное реализацией.
Возможно, http://stackoverflow.com/questions/3958795/different-rand-results-on-windows-and-linux? –
Если у вас есть неопределенное поведение, вы можете получить то, что вы описали. Вы также можете получить разные результаты в разных записях с одним и тем же компилятором. – NathanOliver
[Посмотрите здесь] (http://stackoverflow.com/questions/7209094/why-can-different-c-compilers-give-different-outputs-for-a-c-program). Это зависит от вашего кода, поэтому его трудно сказать без кода/примера. – izlin