1 AĞUSTOS 2013, PERŞEMBE
Zor C kodu bu dört gerisinde kavramı
Neden bu kod çıktı C Sucks
veriyor mu? Bunun ardında yatan düşünce nedir?
#include <stdio.h>
double m[] = {7709179928849219.0, 771};
int main() {
m[1]--?m[0]*=2,main():printf((char*)m);
}
here Test.
CEVAP
1 AĞUSTOS 2013, PERŞEMBE
Sayı 7709179928849219.0
64-bit double
olarak aşağıdaki ikili gösterimi vardır:
01000011 00111011 01100011 01110101 01010011 00101011 00101011 01000011
^^^^^^^ ^^^^---- -------- -------- -------- -------- -------- --------
üs işareti; ^
ve mantis -
(üs olmadan değeri yani) konumunu gösterir.
Temsili beri kullandığı ikili üs ve mantis, bir numara tarafından üs aralıklarla iki katına. Senin program mı tam 771 kez üs olan başladı 1075 (ondalık gösterimi 10000110011
) olur 1075 771 = 1846 sonunda; ikili temsil 1846 11100110110
. Sonuç desen bu gibi görünüyor:
01110011 01101011 01100011 01110101 01010011 00101011 00101011 01000011
-------- -------- -------- -------- -------- -------- -------- --------
0x73 's' 0x6B 'k' 0x63 'c' 0x75 'u' 0x53 'S' 0x2B ' ' 0x2B ' ' 0x43 'C'
Bu desen, sadece ters basılmış görmek dize karşılık gelir. Aynı zamanda, dizinin ikinci elemanı sıfır, null sonlandırıcı sağlayan, dize 14 ** geçiş için uygun hale gelir.
Bunu Paylaş:
Kullanım Haskell devlet kodu bir koku ...
Neden'Sanal DOM kirli model kontr...
Git / Bower Hata: Çıkış Kodu # 128 Ve ...
WPF Otomatik yükseklik kodu...
Neden birim test içinde't kodu pa...