Tom: C-Nachhilfe in Sachen logische Operatoren

Hello,

kann mir jemand verständlich erklären, was in C/C++ der Unterschied zwischen den beiden Oder-Operatoren

|
  ||

ist?

Irgendwie verstehe ich das mit "wenn der Operand nicht ganzzahlig ist" nicht.

Es wird doch bei beiden bitweise verglichen, oder?

Ein harzliches Glückauf

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de
  1. Hallo,

    |  => bitweise
      || => logisch (beide Operanden werden als Boolean ausgewertet und darauf "oder" angewendet)

    Gruß

    1. Hello,

      |  => bitweise
        || => logisch (beide Operanden werden als Boolean ausgewertet und darauf "oder" angewendet)

      Danke.
      Das stand leider in keinem der gefundenen Dokumente so drin.

      also    1010 | 0100 -> 1110
      und     1010 || 0100 ->   1

      ist das richtig so?

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Das stand leider in keinem der gefundenen Dokumente so drin.

        http://www.php.net/manual/de/language.operators.bitwise.php
        http://www.php.net/manual/de/language.operators.logical.php

        also    1010 | 0100 -> 1110
        und     1010 || 0100 ->   1

        Ja.

      2. Hallo,

        also    1010 | 0100 -> 1110
        und     1010 || 0100 ->   1

        ist das richtig so?

        Sofern das Bits sein sollen, ja ;-)

        Gruß

      3. Hallo Tom,

        |  => bitweise
          || => logisch (beide Operanden werden als Boolean ausgewertet und darauf "oder" angewendet)

        Danke.
        Das stand leider in keinem der gefundenen Dokumente so drin.

        das steht in jedem halbwegs ordentlichen C-Anfängerbuch drin :-)

        auch in diesem OpenBook C von A bis Z:
        http://pronix.linuxdelta.de/C/standard_C/c_programmierung_9.shtml#5
        http://pronix.linuxdelta.de/C/standard_C/c_programmierung_11.shtml#5

        Freundliche Grüße

        Vinzenz

        1. Hello Vinzenz,

          das steht in jedem halbwegs ordentlichen C-Anfängerbuch drin :-)

          auch in diesem OpenBook C von A bis Z:
          http://pronix.linuxdelta.de/C/standard_C/c_programmierung_9.shtml#5
          http://pronix.linuxdelta.de/C/standard_C/c_programmierung_11.shtml#5

          Die Links nehem ich gleich mit auf.
          Vielleicht lerne ich C/C++ dann ja doch noch irgendwann richtig :-)

          Ein harzliches Glückauf

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. Hi Tom,

    Das Stichwort ist Short-circuit evaluation(1). Der Untenstehende Code sollte das veranschaulichen.

      
    int foobar (  )  
    {  
     printf ("foobar");  
     return 0;  
    }  /* -----  end of function foobar  ----- */  
      
      
    int  
    main ( int argc, char *argv[] )  
    {  
     if ( (1 == 0) && foobar () )  
      printf("Hello");  
      
     if ( (1 == 0) & foobar () )  
      printf("Hello");  
      
     return EXIT_SUCCESS;  
    }  /* ----------  end of function main  ---------- */  
    
    

    (1)http://en.wikipedia.org/wiki/Short-circuit_evaluation
    MfG
    Otto