課題:x
式(x == x+2)
が真と評価されるような方法で定義します。
質問にCのタグを付けましたが、創造的であるか、言語の興味深い側面を強調している限り、他の言語での回答も歓迎します。
Cのソリューションを受け入れるつもりですが、他の言語でも投票できます。
- 正しい-標準に準拠した実装で動作します。例外-基本型の実装を想定し、それが一般的な実装である場合(たとえば、
int
32ビット2の補数であると想定する)は問題ありません。 - シンプル-小さく、基本的な言語機能を使用する必要があります。
- 興味深い-主観的だと認めます。私が面白いと思うもののいくつかの例がありますが、私はヒントを与えたくありません。更新:プリプロセッサを避けることは興味深いです。
- クイック-最初の良い回答が受け入れられます。
60の回答を得た後(そのような参加を期待していませんでした)、それらを要約するのは良いかもしれません。
60の回答は7つのグループに分けられ、そのうち3つはCで実装でき、残りは他の言語で実装できます。
- Cプリプロセッサ。
#define x 2|0
提案されましたが、他の多くの可能性があります。 - 浮動小数点。大きな数、無限大
またはNaNはすべて機能します。 ポインター演算。巨大な構造体へのポインタにより、2を追加してラップアラウンドします。
残りはCでは機能しません。
- 演算子のオーバーロード-
+
追加しない、または==
常にtrueを返す A。 - 作成
x
(一部の言語はせずに、それを許可する関数呼び出しをx()
構文)。その後、毎回何か他のものを返すことができます。 - 1ビットのデータ型。その後
x == x+2 (mod 2)
。 - 変更
2
-一部の言語では、それに割り当てること0
ができます。
add to Set
標準ライブラリによるものであり、+
自分自身を再定義せずに、これら7つのカテゴリ(IMHO)に適合しません。
4. Quick
?「誰でも知っていて、この質問を最初に読むのに十分な幸運な人」という意味ですか