Завдання: Визначте xтак, щоб вираз (x == x+2)оцінювався як істинний.
Я позначив це запитання С, але відповіді іншими мовами вітаються, якщо вони творчі або виділяють цікавий аспект мови.
Я маю намір прийняти рішення C, але мої голоси можуть отримати інші мови.
- Правильно - працює над стандартами, що відповідають стандартам. Виняток - якщо припустити реалізацію основних типів, якщо це звичайна реалізація (наприклад, якщо
intє доповненням 32 біт 2), це нормально. - Просте - має бути невеликим, використовуйте основні мовні функції.
- Цікаво - це суб’єктивно, визнаю. У мене є кілька прикладів того, що я вважаю цікавим, але не хочу давати підказки. Оновлення : уникати препроцесора цікаво.
- Швидкий - Перша хороша відповідь буде прийнята.
Отримавши 60 відповідей (я ніколи не очікував такого очікування), можливо, буде добре їх підсумувати.
60 відповідей діляться на 7 груп, 3 з яких можна реалізувати на C, решту іншими мовами:
- Препроцесор С.
#define x 2|0було запропоновано, але є багато інших можливостей. - Плаваюча точка. Велика кількість, нескінченність
або NaN - цевсе. Арифметика вказівника. Вказівник на величезну структуру викликає додавання 2 для обгортання.
Решта не працюють з C:
- Перевантаження оператора -
+це не додавання або==те, що завжди повертає істину. - Здійснення
xвиклику функції (деякі мови дозволяють це безx()синтаксису). Тоді він може кожен раз повертати щось інше. - Однобітний тип даних. Потім
x == x+2 (mod 2). - Зміна
2- деяка мова дозволяє вам призначити0її.
add to Setстандартної бібліотеки, не переосмислюючи +себе, не вписується в ці 7 категорій, IMHO.
4. Quick? Ви маєте на увазі "Хто кого знає і пощастить спочатку прочитати це питання"?