Quellcoderätsel



  • net schrieb:

    Simon2 schrieb:

    Edit: Aha - es geht inzwischen um eine andere Frage als ursprünglich ...
    schade, die ursprüngliche fand ich eigentlich interessanter.

    die zweite war wohl zu gemein für dich ;)...

    Nö,

    finde ich aber (zumindestens auf den ersten Blick) interessanter...

    Gruß,

    Simon2.



  • Simon2 schrieb:

    net schrieb:

    die zweite war wohl zu gemein für dich ;)...

    Nö,

    nicht?
    beweise es, ich glaub' es gibt noch mindestens 2 andere tricks (ganz ohne 'sizeof') 🙂



  • Ich hab' mal irgendwo eine Lösung gesehen, die auf den Kommentaren // (C++) und /../ (C) aufgebaut hat, aber ich krieg sie nicht mehr zusammen.



  • CStoll schrieb:

    Ich hab' mal irgendwo eine Lösung gesehen, die auf den Kommentaren // (C++) und /../ (C) aufgebaut hat, aber ich krieg sie nicht mehr zusammen.

    muss aber uralt gewesen sein. die c compiler heute können ja fast alle //



  • net schrieb:

    muss aber uralt gewesen sein. die c compiler heute können ja fast alle //

    Möglich, daß sie es können, aber afair entspricht das nicht dem ANSI C Standard.

    PS: Hab's übrigens wiedergefunden:

    int result = 1 //* */ 2
    ;
    


  • CStoll schrieb:

    Möglich, daß sie es können, aber afair entspricht das nicht dem ANSI C Standard.

    doch, steht in ISO/IEC 9899:1999 kapitel 6.4.9 absatz 2:

    Except within a character constant, a string literal, or a comment, the characters //
    introduce a comment that includes all multibyte characters up to, but not including, the
    next new-line character.



  • Er meint vielleicht ISO/IEC 9899:1989!?



  • finix schrieb:

    Er meint vielleicht ISO/IEC 9899:1989!?

    das ist aber 'outdated'



  • net schrieb:

    finix schrieb:

    Er meint vielleicht ISO/IEC 9899:1989!?

    das ist aber 'outdated'

    Ja, ich meinte C89, weil ich von dort aus gleich zu C++ gewechselt bin (und die Neuerungen in C99 habe ich bestenfalls am Rande mitbekommen).



  • Blue-Tiger schrieb:

    warum liefert das unter C was anderes als unter C++?

    Da die Frage noch nicht beantwortet wurde (oder habe ich die Antwort übersehen?): In C++ gilt sizeof(charLit) == sizeof(char). In C hingegen ist sizeof(charLit) == sizeof(int). Wobei charLit hier für ein beliebiges char-Literal steht (wie z.B. 'a'). Sollte also sizeof(char) auf der Test-Platform != sizeof(int) sein, bekommst du unterschiedliche Ergebnisse.



  • CStoll schrieb:

    net schrieb:

    muss aber uralt gewesen sein. die c compiler heute können ja fast alle //

    Möglich, daß sie es können, aber afair entspricht das nicht dem ANSI C Standard.

    PS: Hab's übrigens wiedergefunden:

    int result = 1 //* */ 2
    ;
    

    Ist das denn gültig im Sinne von "nur eine Zeile"? Das lässt sich doch so nicht in eine Zeile quetschen, oder?



  • siehe Name


Anmelden zum Antworten