kuriose Variablendeklaration



  • @unbash
    Dein Vergleich ist unsinnig.
    Man könnte auch schönen C++ Code schreiben.



  • SeppJ schrieb:

    Das !!foo ist wohl eine trickreiche (und evtl. schnellere) Schreibweise für foo ? 1 : 0 . Außerdem eine weitere Stelle, die man in C++ viel schöner mittels bool hätte lösen können.

    Wenn du damit static_cast<bool> meinst, das geht zwar, wird aber von MSVC mit einer sinnfreien "Performance-Warning" quittiert.
    Bei !! dagegen kommt keine.

    Und schneller ist da auch nix, ausser schneller zu tippen 🤡



  • Seit wann schreibt man nicht mehr was man meint, in dem Fall foo != 0 ?



  • Seit dem man nicht mehr if (FunktionDieBoolZurueckgibt() != false) schreibt...



  • Kind, Badewasser.


  • Mod

    Bashar schrieb:

    Seit wann schreibt man nicht mehr was man meint, in dem Fall foo != 0 ?

    Dann stünde da

    int value = funktionaufruf() != 0;
    

    Da finde ich ehrlich gesagt !! doch besser.

    hustbaer schrieb:

    SeppJ schrieb:

    Das !!foo ist wohl eine trickreiche (und evtl. schnellere) Schreibweise für foo ? 1 : 0 . Außerdem eine weitere Stelle, die man in C++ viel schöner mittels bool hätte lösen können.

    Wenn du damit static_cast<bool> meinst, das geht zwar, wird aber von MSVC mit einer sinnfreien "Performance-Warning" quittiert.
    Bei !! dagegen kommt keine.

    Ich dachte an

    bool value = funktionsaufruf();
    


  • SeppJ schrieb:

    hustbaer schrieb:

    SeppJ schrieb:

    Das !!foo ist wohl eine trickreiche (und evtl. schnellere) Schreibweise für foo ? 1 : 0 . Außerdem eine weitere Stelle, die man in C++ viel schöner mittels bool hätte lösen können.

    Wenn du damit static_cast<bool> meinst, das geht zwar, wird aber von MSVC mit einer sinnfreien "Performance-Warning" quittiert.
    Bei !! dagegen kommt keine.

    Ich dachte an

    bool value = funktionsaufruf();
    

    Jo das wäre schön, nen?
    Kommt aber leider die selbe blöde Warning 🙂
    Es sei denn natürlich man dreht sie ab.
    http://stackoverflow.com/questions/2439494/forcing-value-to-boolean-bool-makes-warning-doesnt



  • Bashar schrieb:

    Kind, Badewasser.

    Ne.


  • Mod

    hustbaer schrieb:

    Jo das wäre schön, nen?
    Kommt aber leider die selbe blöde Warning 🙂
    Es sei denn natürlich man dreht sie ab.
    http://stackoverflow.com/questions/2439494/forcing-value-to-boolean-bool-makes-warning-doesnt

    😕 Ist die Warnung berechtigt oder ist das, nichts für ungut, wieder irgendwelcher MSVC Quatsch?



  • irgendwie hab ich das Gefühl dass hier aneinander vorbeigeredet wird

    ging es bei !!foo nicht darum dass foo ein Objekt ist, dessen operator! überschrieben wurde und über die Lösung dass das erste ! in !!foo der oprator ausgeführt und das Ergebnis durch das zweite ! schlicht negiert wird ?

    krass was manche Kleinigkeiten(im Sinne von 2 Ausrufezeichen, ich will nicht sagen es sei unwichtig) doch für Diskussionen auslösen, tut mir leid 🙂


  • Mod

    Ceos schrieb:

    ging es bei !!foo nicht darum dass foo ein Objekt ist, dessen operator! überschrieben wurde und über die Lösung dass das erste ! in !!foo der oprator ausgeführt und das Ergebnis durch das zweite ! schlicht negiert wird ?

    Da das ziemlich eindeutig C ist, ist foo hier weder ein Objekt, noch ist der operator! überladen. ! ist hier der normale NOT-Operator. Du musst jedoch beachten, dass !!foo != foo . Ich habe das Gefühl, das ist dir irgendwie entgangen. Beispiel:

    int foo = 5;
    !foo;   // 0
    !!foo;  // 1
    


  • Bashar schrieb:

    Seit wann schreibt man nicht mehr was man meint, in dem Fall foo != 0 ?

    Ja, sehe ich auch so.



  • SeppJ schrieb:

    Außerdem eine weitere Stelle, die man in C++ viel schöner mittels bool hätte lösen können.

    In C99 gibt es auch bool. Viel schöner ist auch relativ. "Viel schöner" kann man also auch in C schreiben und braucht deswegen nicht auf C++ ausweichen.



  • SeppJ schrieb:

    Das !!foo ist wohl eine trickreiche (und evtl. schnellere) Schreibweise für foo ? 1 : 0 .

    Naja, trickreich ist wohl übertrieben, !!ausdruck ist einfach ein Äquivalent für

    (ausdruck == 0)==0 oder passender wohl 0==(0==ausdruck))
    

    und das wiederum ist äquivalent zu

    ausdruck != 0
    


  • SeppJ schrieb:

    int value = funktionaufruf() != 0;
    

    Da finde ich ehrlich gesagt !! doch besser.

    Ich nicht.


  • Mod

    Wutz schrieb:

    In C99 gibt es auch bool.

    Dem Rest des Codes nach zu urteilen ist das C89.



  • Das ist doch Treibercode, der wohl irgendwann mal im Linuxkernel landen soll.

    SeppJ schrieb:

    Es kann ja durchaus noch eine Variable gpio_desc im gleichen Scope geben.

    Und so ist es (höchstwahrscheinlich) auch.

    static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];
    

    in drivers/gpio/gpiolib.c. In Treibern findet sich ahnliches. Vergleichbares wird der Samsung-Treiber wohl auch irgendwo stehen haben.


Anmelden zum Antworten