using-direktive später aktivieren?



  • #include <iostream> // präprozessor; dateien aus der bibliothek laden
    int main(void)
    {
    	//  using-directive weglassen
    
    	int i0; // variablen deklaraieren
    	int i1; // variablen deklaraieren
    	int i2; // variablen deklaraieren
    
    	i0 = i1 = i2 = 18;  // i0 und i1 und i2 haben alle 18 als Wert
    
    	std::cout << "hallo, meine lieblingszahl ist " << i0*i1*i2; // verwende std::cout namespace ohne "using-directive"
    
    		// ergebnis von 18*18*18 = 5832
    
    	std::cout << std::endl; // durch std::endl wandert der nächste string eine zeile runter
    	std::cout << "bye";
    
    	using std::cin; // aktiviere cin
    	cin.get(); // wartet auf enter-eingabe (stoppt programm)
    
    	return 0;
    

    Liebes Forum,

    ich wollte fragen, ob der Code-Style schlecht/gut ist, wenn ich using std::cin; erst später in den code einbringe, statt ganz anfangs. (Kann er zu Fehlern führen?)

    Ich wollte nur paar Sachen ausprobieren. 🤡

    Vielen Dank im Voraus!



  • Mathematics schrieb:

    [code="cpp"]
    cin.get(); // programm

    Das ist der beste Kommentar 👍



  • tut mir leid xD hab überall kommentare gekürzt , mir ist dieser fehler dann unterlaufen, lol.
    hahaha 🤡

    cin.get(); wartet nur auf Eingabe der Enter-Taste, mehr weiß ich leider nicht. 😋 wird erst später im buch verraten



  • Meine Meinung:

    #include <iostream> // präprozessor; dateien aus der bibliothek laden
    

    Der Kommentar erscheint überflüssig.

    int main(void)
    

    Da dies C++ und kein C ist, kann man das "void" innerhalb der Klammern besser weglassen.

    {
    	//  using-directive weglassen
    
    	int i0; // variablen deklaraieren
    	int i1; // variablen deklaraieren
    	int i2; // variablen deklaraieren
    
    	i0 = i1 = i2 = 18;  // i0 und i1 und i2 haben alle 18 als Wert
    

    Das halte ich für sehr schlecht. Wenn möglich, initialisiere die Variablen gleich sinnvoll anstatt das in Definition und Initialisierung aufzuteilen. (Übrigens ist dein Kommentar nicht ganz korrekt: das ist hier eine Definition, nicht nur eine Deklaration!)

    Nächstes Problem: was bedeutet die 18? Solche Zahlen am besten sinnvoll mithilfe einer Kontakten benennen!

    Wo wir schon dabei sind: i0, i1, i2 sind vielleicht auch nicht unbedingt gute Namen. Wenn du dich jetzt fragst, warum ich so drauf rumreite: gute Namen sind äußerst wichtig.

    std::cout << "hallo, meine lieblingszahl ist " << i0*i1*i2; // verwende std::cout namespace ohne "using-directive"
    
    		// ergebnis von 18*18*18 = 5832
    
    	std::cout << std::endl; // durch std::endl wandert der nächste string eine zeile runter
    

    Durch std::endl wird ein Zeilenumbruch in den Stream geschrieben UND danach wird der Stream geflusht. Da du direkt danach wieder was in den Stream schreibst, ergibt das Flush wenig Sinn hier.

    std::cout << "bye";
    
    	using std::cin; // aktiviere cin
    

    Aktiviere? cin ist auch vorher "aktiv", es wird nur für Benutzung ohne namespace-Angabe sichtbar gemacht.

    cin.get(); // wartet auf enter-eingabe (stoppt programm)
    

    Du könntest auch std::cin.get(); schreiben.



  • Vielen Dank! 😋



  • Das mit dem using Statement sollst du so nicht verwenden. Das gebrauchst du idR nur wenn es in einer, zwei Funktionen von vielen bekannt sein muss - falls du so kollisionssicher programmieren willst. Benutz entweder die globale Variante, oder kürz ab und schreib den Scope immer dazu.


Log in to reply