O desafio: defina de x
forma que a expressão (x == x+2)
seja avaliada como verdadeira.
Marquei a pergunta com C, mas as respostas em outros idiomas são bem-vindas, desde que sejam criativas ou destacem um aspecto interessante do idioma.
Pretendo aceitar uma solução C, mas outros idiomas podem obter meu voto.
- Correto - funciona em implementações compatíveis com padrão. Exceção - supor que uma implementação dos tipos básicos, se for uma implementação comum (por exemplo, supondo que
int
o complemento de 32 bits 2) esteja OK. - Simples - deve ser pequeno, use os recursos básicos da linguagem.
- Interessante - é subjetivo, admito. Tenho alguns exemplos para o que considero interessante, mas não quero dar dicas. Atualização : Evitar o pré-processador é interessante.
- Rápido - A primeira boa resposta será aceita.
Depois de obter 60 respostas (nunca esperei essa antecipação), pode ser bom resumi-las.
As 60 respostas se dividem em 7 grupos, 3 dos quais podem ser implementados em C, o restante em outros idiomas:
- O pré-processador C.
#define x 2|0
foi sugerido, mas existem muitas outras possibilidades. - Ponto flutuante. Grandes números, infinito
ou NaN,todos funcionam. Ponteiro aritmético. Um ponteiro para uma estrutura enorme causa a adição de 2 para contornar.
O resto não funciona com C:
- Sobrecarga de operador - Um
+
que não adiciona ou==
que sempre retorna verdadeiro. - Fazendo
x
uma chamada de função (alguns idiomas permitem isso sem ax()
sintaxe). Em seguida, ele pode retornar outra coisa a cada vez. - Um tipo de dados de um bit. Então
x == x+2 (mod 2)
. - Mudando
2
- algum idioma permite atribuir0
a ele.
add to Set
pela biblioteca padrão, sem +
se redefinir , não se encaixa nessas 7 categorias, IMHO.
4. Quick
? Você quer dizer "Quem conhece um e tem a sorte de ler esta pergunta primeiro"?