Variablen ungleich deklarieren



  • Ich bin relativ neu in der Sprache c und lote gerade meine Möglichkeiten aus. Gibt es eine Möglichkeit, die eine Variable ungleich der anderen zu deklarieren? Ich suche also nach einer analogen Möglichkeit zu
    int a = int b, nur eben dass ich sie nicht gleich deklariere, sondern unterschiedlich. Viel Dank im Voraus 🙂


  • Mod

    a = ! b geht für viele Typen. Ich frage mich aber ernsthaft, wozu du denkst, dass das gut sein soll. Denn es ist zu nichts gut. Wahrscheinlich hast du ein X-Y-Problem. Was hast du wirklich vor?



  • Ich möchte testen, was in dem Fall passiert, wenn Eingabewert ungleich dem Zufallswert und was passiert wenn Eingabewert gleich dem Zufallswert ist. Jetzt habe ich es so geregelt indem ich beiden Variablen unterschiedlich deklariere, aber das ist ja definitiv keine elegante Lösung

    else if (schadeTest != 0)
    	{
    		Eingabewert =3;
    		Zufallswert = 2;
    	}
    	else if (gratulationTest != 0)
    	{
    		Eingabewert = Zufallswert;
    	}
    

  • Mod

    Da fehlt mir zu viel Kontext, um auch nur fundiert zu spekulieren. Soll das eine Art Unit-Test sein? einmal zum Probieren, was passiert, wenn etwas mit gleichen Werten aufgerufen wird, und einmal mit ungleichen Werten?



  • Ja das ist genau richtig! Es funktioniert ja auch beides, nur hätte ich eben gerne in Zeile 3&4 eine Alternative, statt den Eingabewert und den Zufallswert einzeln mit verschiedenen Werten zu deklarieren


  • Mod

    In dem Fall würde ich bei deiner vorherigen Methode bleiben und die volle Kontrolle über die Werte haben.



  • Ich denke, du solltest die eine Liste von Tests machen, also eher so:

    run_my_test(3, 3);
    run_my_test(3, 5);
    run_my_test(3, INT_MAX);
    run_my_test(0, 0);
    run_my_test(-1, -1);
    run_my_test(-10, 3);
    run_my_test(INT_MIN, 3);
    ...
    

    Wobei die beiden Argumente dann dein Eingabewert und Zufallswert sind.

    Ggf. willst du noch ein Argument "expected" hinzufügen, wo du das erwartete Ergebnis reinschreibst, sodass du auch vergleichen kannst, ob das richtige rauskommt. (ich habe mich inzwischen so an https://docs.pytest.org/en/stable/parametrize.html gewöhnt - weiß aber nicht, welches Test-Framework für C besonders gut geeignet ist. Allerdings kommst du auch mit ganz einfachen selbstgemachten Tests schon sehr weit)


Log in to reply