Я знаю, что это вопрос Java, но рассмотрение вопроса для других языков интригует.
В C простой тип, такой как 'int', может демонстрировать 'прекращение до того, как юниверс станет холодным', если 'i' объявлено как энергозависимое (поэтому компилятор будет вынужден сделать два чтения 'i' для каждой итерации), и если 'i' действительно было в памяти, где что-то еще могло повлиять на это. Затем цикл завершается, когда «i» изменяется между двумя чтениями одной итерации. ( Добавлено : возможное место - в микрокомпьютере, где «i» фактически находится по адресу порта ввода / вывода, возможно, подключенного к датчику положения. Было бы более правдоподобно, если «i» 'была переменной-указателем (указателем на энергозависимую память), а оператор был' while (*i == *i);
'.)
Как свидетельствуют другие ответы, в C ++ оператор '==' может быть предоставлен пользователем, если я принадлежу к пользовательскому классу, поэтому все может быть возможно.
Скорее, чем NaN, в языке на основе SQL цикл не был бы бесконечным, если бы значение i было NULL; однако любое значение, отличное от NULL, сделает цикл бесконечным. Это скорее похоже на Java, где любое число (в отличие от NaN) делает цикл бесконечным.
Я не вижу, чтобы конструкт имел какое-либо практическое применение, но это интересный вопрос о пустяках.