Uterschied Logische und Bitweise-Verknüpfung



  • Hallo

    hab heute das hier in einem anderen Code gesehen

    if(bytes[3] == '.' & bytes[4] == 'h' & bytes[5] == 'e' & bytes[6] == 'l' & bytes[7] == 'p'){}
    

    und war erstmal erstaunt das es funktioniert aber nachdem ich drüber nachdachte wurde mir klar das es ja eigentlich egal sein müsste ob man nun && oder & verwendet oder irre ich mich da ?

    Mal abgesehn davon das es andere Programmiere verwirrt gibt es gute gründe es nicht zu verwenden (ich werd natürlich weiterhin && verwenden für logisch vergleiche)?

    Mfg Dakoon



  • && evaluiert nur solange es sinn macht. sprich:

    false && foo()
    ruft nie foo() auf.

    false & foo()
    dagegen schon.

    weiters geht && auf die logik des ausdrucks waehrend & auf die bit geht.
    wenn du nun einen boolean hast, ists klar dass && und & gleich auswerten (da ja nur das 1. bit relevant ist).
    bei 1 & 2 vs 1 && 2 dagegen sieht die sache anders aus.


Log in to reply