Завдання: Визначте 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
? Ви маєте на увазі "Хто кого знає і пощастить спочатку прочитати це питання"?