Frage zur Analyse eines Programms



  • bezüglich malloc schrieb:

    Hi,
    Wer sagt das malloc nicht mehr gecastet werden darf?
    Das ist doch völliger Schwachsinn, wer's machen möchte soll's machen.

    von dürfen hat keiner was gesagt, aber schau mal:

    char *p = (char)malloc(...);
    

    da hat einer zu schnell getippt und beim cast das '*' weggelassen...
    🙂



  • switch (skill)
    {
        case ahnungslos:
            if (foo == true)
                bar = bar + 1;
            break;
    
        case anfaenger:
            if (foo != false)
                bar++;
            break
    
        case pragmatiker:
            bar += !!foo;
            break;
    }
    

    ...gedanken...



  • c.rackwitz schrieb:

    ...gedanken...

    Da hat das !! ja auch einen Effekt 😉



  • ich seh aber so selten ein !!... entweder ists verboten wie das goto oder leute wissen nicht, dass es geht.



  • c.rackwitz schrieb:

    ich seh aber so selten ein !!... entweder ists verboten wie das goto oder leute wissen nicht, dass es geht.

    viele nehmen bestimmt lieber 'a&1' statt '!!a'.
    auch wenn '!!' was bringt, aber doof sieht's ja aus 😉



  • vista schrieb:

    c.rackwitz schrieb:

    ich seh aber so selten ein !!... entweder ists verboten wie das goto oder leute wissen nicht, dass es geht.

    viele nehmen bestimmt lieber 'a&1' statt '!!a'.
    auch wenn '!!' was bringt, aber doof sieht's ja aus 😉

    !!a und a&1 sind aber nicht äquivalent.



  • false != 1&((2&1 == !!2) != true)
    *wuerg*



  • TactX schrieb:

    !!a und a&1 sind aber nicht äquivalent.

    das nicht, aber es kommt das selbe raus, 1 oder 0
    🙂
    edit: ach ja, false ist ja 'ungleich 0'.
    dann ist '!!a' äquivalent zu 'a=(a!=0)'
    vielleicht sollte ich mal 10 sekunden nachdenken, bevor ich poste 😉



  • vista schrieb:

    bezüglich malloc schrieb:

    Hi,
    Wer sagt das malloc nicht mehr gecastet werden darf?
    Das ist doch völliger Schwachsinn, wer's machen möchte soll's machen.

    von dürfen hat keiner was gesagt, aber schau mal:

    char *p = (char)malloc(...);
    

    da hat einer zu schnell getippt und beim cast das '*' weggelassen...
    🙂

    Deswegen hat man auch darauf zu achten was man macht,
    Du sprichst ja auch nicht Deutsch und Englisch zusammen :p.



  • falsches argument.

    ohne den cast waere der fehler garnicht erst moeglich gewesen.



  • es ist ja gerade das gute an void*, dass man sie nicht casten muss.
    andernfalls hätten die überhaupt keine existenzberechtigung.
    🙂



  • [quote="vista"]

    TactX schrieb:

    !!a und a&1 sind aber nicht äquivalent.

    das nicht, aber es kommt das selbe raus, 1 oder 0
    :)[quote]Wenn du es aus der Sicht siehst, sind alle boole'schen Operatoren äquivalent (die geben alle 1 oder 0 aus) 😉



  • [quote="CStoll"][quote="vista"]

    TactX schrieb:

    !!a und a&1 sind aber nicht äquivalent.

    das nicht, aber es kommt das selbe raus, 1 oder 0
    🙂

    Wenn du es aus der Sicht siehst, sind alle boole'schen Operatoren äquivalent (die geben alle 1 oder 0 aus) 😉

    naja, ich bin irrtümlicherweise davon ausgegangen, dass false==0 und true==1 sind.
    aber das zweite davon stimmt ja nicht...
    🙂


Anmelden zum Antworten