Mesele: x
İfadenin (x == x+2)
doğru olarak değerlendirileceği şekilde tanımlayın .
Soruyu C ile etiketledim, ancak yaratıcı oldukları veya dilin ilginç bir yönünü vurguladıkları sürece diğer dillerde cevaplar açıktır.
Bir C çözümünü kabul etmek niyetindeyim, ancak diğer diller oyumu alabilir.
- Doğru - standart uyumlu uygulamalar üzerinde çalışır. İstisna - eğer temel bir uygulama varsayalım, eğer ortak bir uygulama ise (örneğin
int
, 32bit 2'nin tamamlayıcısı olduğu varsayılır ) tamamdır. - Basit - küçük olmalı, temel dil özelliklerini kullanın.
- İlginç - öznel, itiraf ediyorum. İlginç bulduğum şeyler için bazı örneklerim var, ancak ipucu vermek istemiyorum. Güncelleme : Önişlemciden kaçınmak ilginçtir.
- Çabuk - İlk iyi cevap kabul edilecektir.
60 cevap aldıktan sonra (böyle bir beklenti beklemiyordum), onları özetlemek iyi olabilir.
60 cevap 7 gruba ayrılmıştır, bunlardan 3'ü diğer dillerdeki C dilinde uygulanabilir:
- C önişlemcisi.
#define x 2|0
önerildi, ancak daha birçok olasılık var. - Kayan nokta. Büyük sayılar, sonsuzluk
veya NaNhepsi işeyarar. İşaretçi aritmetiği. Büyük bir yapıya bir işaretçi etrafına sarılmaya 2 ekleyerek neden olur.
Gerisi C ile çalışmıyor:
- Operatör aşırı yüklenmesi -
+
Eklemeyen veya==
her zaman doğru olan bir A. x
İşlev çağrısı yapma (bazı dillerx()
sözdizimi olmadan izin verir ). O zaman her seferinde başka bir şey döndürebilir.- Bir bit veri türü. Öyleyse
x == x+2 (mod 2)
. - Değiştirme
2
- bazı diller size atamanıza izin verir0
.
add to Set
, standart kütüphane ile +
kendini yeniden tanımlamanıza gerek kalmadan ifade eder , bu 7 kategoriye, IMHO'ya uymaz.
4. Quick
? "Kim bir tanıyor ve ilk önce bu soruyu okuyacak kadar şanslı" mı demek istiyorsun?