Kurios, kurios und zur Info



  • Folgendes kurze Codefragment verursacht bei mir jedenfallse keinen Compiler oder Linker Fehler.

    //Nur ein Beispiel 
    int Irgendeine Funktion 
    { 
       int x=0,Ret=0; 
    
       Ret=EineAndereFunktion(); 
       if(Ret==FALSE) 
          return FALSE, 
       x=5; 
       return TRUE; 
    }
    

    Die Aussage dürfte aber doch wohl gelogen sein, oder?
    Schreib doch nicht eine Funktion die etliche Fehler hat um zu fragen warum ein bestimmter Fehler auftritt. Wie soll man denn dabei helfen.

    Ich hab ja schließlich keine Glaskugel, die mir alles erzählt.

    Aber wenn du als Rückgabewert "int" hast und mit Return "int" und "bool" zurückgeben willst, wundert es mich nicht, das das Programm nicht das macht, was es soll.

    Soll sich der Komiler selber aussuchen welchen Rückgabewert er nimmt?



  • FALSE != false



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ich gaube dem lieben Gerhardx2 ging es um diese Kuriosität:

    int testfunction();
    int main(){
      cout<<testfunction();//es wird 2 ausgegeben!!
      return 0; 
    }
    int testfunction(){
      int x=1,y=2;
      return x,y;
    }
    

    mit return x,y; gibt man nämlich y zurück! seltsam, seltsam....

    post scriptum: ich weiß, daß wir hier bei AnsiC sind und ich C++-features verwende, aber darum geht es gerade ja nicht;ergo: bitte nicht schimpfen

    Trikor schrieb:

    P.S. Arbeitest Du zufällig bei Mircosoft??? 😃

    😃 😃



  • Meine Frage:
    warum wird das Komma ignoriert?
    Und um es zu verdeutlichen ein funktionierendes Beispiel, mit Komma

    void CTestDlg::OnButtonFalse() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	MeineFunktion();
    }
    
    void CTestDlg::MeineFunktion()
    {
    	int x=10;
    	int y=0;
    
             CString sShow;
    	int ReturnCode=0;
    
    	ReturnCode=AddFunktion(x,y);
    
    	sShow.Format("Rückgabe: %d",ReturnCode);
    	AfxMessageBox(sShow);
    }
    
    int CTestDlg::AddFunktion(int a, int b)
    {
    	int z=0;
    	int Ret=12345;
    
    	if(b==0)
    		return Ret,//hier das Komma
    	z=a/b;
    	return z;
    }
    

    Mit Komma bekomme ich einen Programmabsturz, weil man eben nicht durch 0 teilen darf
    Also kein Bool kein false/FALSE

    Aber Unix-Tom, vielleicht liegt ja an dem VC++ Compiler oder ist das so gedacht?



  • freshman
    genau das war es.
    mein Beitrag hat sich wohl überschnitten.
    Und da das Komma ein Tippfehler war habe ich nur so lange gebraucht bis ich den Fehler gefunden habe



  • warum das so ist und ob das Standard ist weiß ich aber auch nicht, ist mir auch nur aufgefallen; benutze nämlich auch M$ Visual Studio 6.0



  • Der gcc, g++ liefert in diesem Fall auch keinen Fehler.



  • super ihr habt den kommaoperator entdeckt...*beglückwünsch*

    http://userpage.fu-berlin.de/~ram/pub/pub_kfd8tk88g/c_operatoren_und_sequenzpunkte_de

    da findet ihr auch ne erklärung



  • @TheTester
    Danke und da siehste mal wozu wir u.a. so ein Forum brauchen.
    Mir war schon klar, dass das in die Richtung geht, aber an den Operator habe ich nicht mehr gedacht.
    Was man halt selten bis gar nicht benutzt, fällt aus dem Augengenwinkel.
    Dann scließen wir mal diesen Thread und ich bedanke mich bei allen Beteiligten, denn damit ist meine Frage, wenn wir sie als solche gelten lassen wollen, beantwortet.
    Das Komma habe ich also solches ja nicht wahrgenommen, denn das konnte ja nicht gehen. In for-schleifen habe ich diesen Operator ja auch in Verwendung.
    Ja Ja
    also nochmals Danke und schönen Gruß


Anmelden zum Antworten