Я бы хотел разобраться с терминологией. Подумайте:
for (double d = 0.0; d != 1.0; d += 0.1)
cout << d << " ";
Если я правильно понимаю, поскольку двойная арифметика неточна, этот цикл может быть либо конечным, либо бесконечным. Это считается неопределенным или неопределенным поведением?