Doszedł do mnie taki oto kawałek: `

>>> 0x0 +2
4
>>> 0x0 +3.5
6.5
>>> 0x0 +2e1
757

` Zagadka za 0 punktów: co to za język programowania? :>

Przyszło od razu z wyjaśnieniem:

 once their lexer detects "0x", it skips all '0's, then calls strtol()

 so: tokptr = "0x0 +2;", toklen = 3

 skip 0x: tokptr = "0 +2;", toklen = 1

 skip all '0's: tokptr = " +2;", toklen = 0

 call strtol(" +2", NULL, 16) ==> 2

 then it proceeds to parse the remaining program starting from " +2;"

       because that's where the previous token ends

 and this is how 0x0 ends up having the value 2

 0x0 +2e1 ends up being 757 because the first pass interprets 2e1 as a

hex integer

       while the second pass thinks it's a floating point number

 so it's really 0x2e1 + 2.0e1

Źródło: strona domowa internetów.

Komentarze

  • Stanisław ‘dozzie’ Klekot (2012-12-05 17:49:02):

    Holy fscking bubbles! To nawet ja takich baboli nie wstawiłem w swoich parserach, a za eksperta się nie uważam O_o

    Ale trzeba być naprawdę głupim żeby tak spaprać tokenizer pisany we fleksie.

  • mt3o (2012-12-05 18:17:57):

    PHP. Było na roflcopter.

  • pecet (2012-12-05 18:59:44):

    PHP. Było na roflcopter.

    brawo szerloku

  • Shelly (2014-09-02 12:59:51):

    My programmer is trying to persuade me to move to .net from PHP.
    I have always disliked the idea because of the costs. But he’s tryiong none the less.

    I’ve been using WordPress on various websites for about a year and am concerned about switching to another platform.
    I have heard excellent things about blogengine.net. Is
    there a way I can transfer all my wordpress
    posts into it? Any kind of help would be really appreciated!