SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • PUSHER

    PUSHER

    11 HAZİRAN 2014
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012