Рассмотрим две следующие программы:
int main()
{
printf( "hello\n" );
}
int main()
{
srand( 0 );
if( rand() ) {
printf( "hello\n" );
} else {
printf( "hello\n" );
}
}
Имеют ли они такое же наблюдаемое поведение или нет? Согласно Стандарту C ++ (1.9 / 6) наблюдаемое поведение включает:
изменчивые
данные Теперь srand ()
и rand ()
, вероятно, не являются функциями ввода-вывода (хотя я понятия не имею, использует ли данная реализация какой-либо аппаратный источник шума), но они изменяют внутреннее состояние программы. Манипулируют ли они изменчивыми
данными? Я не знаю. Вызовы printf ()
явно являются операциями ввода-вывода, и их последовательности идентичны в обеих программах.
Имеют ли две указанные выше программы одинаковое наблюдаемое поведение? Как мне узнать, имеют ли две данные программы одинаковое наблюдаемое поведение?