Was bedeutet if(Variable)?



  • Moin,
    ich habe ne Frage und zwar was bedeutet das hier:

    int check;
    if(check)
    //führe aus....
    

    Doch was beudeutet das if(check)?



  • kann doch nicht Dein Ernst sein? 😮



  • Prinzipiell kann das schon sinnlos sein. Was soll schon eine Bedingung wie "Wenn 207 ist" bedeuten? In C wird ein Ausdruck als falsch angesehen, wenn er irgendwie null. Das kann z.B. ein Zeiger sein, eine Ganzzahl oder das erste Element in einer Aufzählung. Alles andere wird als wahr angesehen. Es gilt:

    if (a) 
    /* <=> */
    if (a != 0)
    

    Gruß
    Don06



  • Ich finde die Frage nicht ganz unberechtigt.

    C und C++ interpretieren Zahlenwerte als Bedingung immer als falsch wenn sie 0 sind. Ansonsten als wahr.

    if ( check )
    

    tut also das selbe wie:

    if ( check != 0 )
    


  • Das liegt letztlich aber daran, dass es in C keinen boolschen Datentyp gibt, d.h. selbst eine Bedingung wie (a < 10) ergibt 0 oder 1, und damit stellt sich automatisch wieder die Frage, was if (0) bzw. if (1) sein soll.



  • Bashar schrieb:

    Das liegt letztlich aber daran, dass es in C keinen boolschen Datentyp gibt, d.h. selbst eine Bedingung wie (a < 10) ergibt 0 oder 1, und damit stellt sich automatisch wieder die Frage, was if (0) bzw. if (1) sein soll.

    Nunja, die Werte 1 und 0 sind relativ leicht als boolischer Wert zu erkennen. 😉

    Bei einer Zahl die jedoch noch andere Werte haben kann, muss man wissen, dass alles außer 0 die Bedeutung von wahr hat.



  • hier liegt es dann wieder am programmierer, dafür zu sorgen, daß a nur 1 oder 0 ist.

    btw bei mir im buch stehts drin, daß alles !=0 immer wahr ist



  • Osbios schrieb:

    Nunja, die Werte 1 und 0 sind relativ leicht als boolischer Wert zu erkennen. 😉

    Ach? Aber nur, wenn man schon weiß, dass man sie so interpretieren kann, womit sich die Katze in den Schwanz beißt. In anderen Programmiersprachen kann das ganz anders aussehen.



  • Bashar schrieb:

    Das liegt letztlich aber daran, dass es in C keinen boolschen Datentyp gibt

    gibts doch. der heisst _Bool
    🙂



  • ~fricky schrieb:

    Bashar schrieb:

    Das liegt letztlich aber daran, dass es in C keinen boolschen Datentyp gibt

    gibts doch. der heisst _Bool
    🙂

    Das ist C99, ich rede von C 😉 Logische Ausdrücke sind übrigens auch in C99 vom Typ int, nicht _Bool.



  • Bashar schrieb:

    ~fricky schrieb:

    Bashar schrieb:

    Das liegt letztlich aber daran, dass es in C keinen boolschen Datentyp gibt

    gibts doch. der heisst _Bool
    🙂

    Das ist C99, ich rede von C 😉 Logische Ausdrücke sind übrigens auch in C99 vom Typ int, nicht _Bool.

    typedef enum { false = 0, true, } bool;
    😛



  • Du hast file_no_found vergessen (ich denke, du wolltest, daher das letzte Komma):

    typedef enum { false = 0, true, file_not_found} bool;
    

    🙂



  • Tachyon schrieb:

    Du hast file_no_found vergessen (ich denke, du wolltest, daher das letzte Komma

    typedef enum { false = 0, true, file_not_found} bool;
    

    das komma stört nicht. wieso überhaupt 'file_not_found'? wenn schon, dann 'probably_true' oder sowas?
    🙂



  • ~fricky schrieb:

    Tachyon schrieb:

    Du hast file_no_found vergessen (ich denke, du wolltest, daher das letzte Komma

    typedef enum { false = 0, true, file_not_found} bool;
    

    das komma stört nicht. wieso überhaupt 'file_not_found'? wenn schon, dann 'probably_true' oder sowas?
    🙂

    😃 wieso reißen eigentlcih immer diejenigen die klappe auf, die keine ahnung haben oder immer meinen was verbessern zu müssen was nicht verbesserungswürdig ist?



  • bool schrieb:

    wieso reißen eigentlcih immer diejenigen die klappe auf, die keine ahnung haben oder immer meinen was verbessern zu müssen was nicht verbesserungswürdig ist?

    meinst du mich, oder tachy, oder beide?
    🙂



  • ~fricky schrieb:

    bool schrieb:

    wieso reißen eigentlcih immer diejenigen die klappe auf, die keine ahnung haben oder immer meinen was verbessern zu müssen was nicht verbesserungswürdig ist?

    meinst du mich, oder tachy, oder beide?
    🙂

    tachy



  • bool schrieb:

    ~fricky schrieb:

    bool schrieb:

    wieso reißen eigentlcih immer diejenigen die klappe auf, die keine ahnung haben oder immer meinen was verbessern zu müssen was nicht verbesserungswürdig ist?

    meinst du mich, oder tachy, oder beide?
    🙂

    tachy

    Ach was, Du verstehst nur den tieferen Sinn nicht. file_not_found ist bei 'nem bool-Typen absolut elementar.



  • Tachyon schrieb:

    bool schrieb:

    ~fricky schrieb:

    bool schrieb:

    wieso reißen eigentlcih immer diejenigen die klappe auf, die keine ahnung haben oder immer meinen was verbessern zu müssen was nicht verbesserungswürdig ist?

    meinst du mich, oder tachy, oder beide?
    🙂

    tachy

    Ach was, Du verstehst nur den tieferen Sinn nicht. file_not_found ist bei 'nem bool-Typen absolut elementar.

    Sagt wer?
    bool -> false, true, ende im gelände



  • bool schrieb:

    [...]

    Meine Güte, bist Du verkniffen. 😃

    Siehe mal hier. Das belegt eindeutig: Ein bool ohne file_not_found geht mal gar nicht.



  • Tachyon schrieb:

    bool schrieb:

    [...]

    Meine Güte, bist Du verkniffen. 😃

    Siehe mal hier. Das belegt eindeutig: Ein bool ohne file_not_found geht mal gar nicht.

    Und wo steht jetzt, dass zum bool ein 3. Wert gehört?
    Zum bool gehört nur ja oder nein, richtig oder falsch, piano oder gitarre.


Anmelden zum Antworten