strange !!
-
blurry333 schrieb:
Wenn ich volatile verwende sagt er mir stack corrupted.
Das ist doch genug Info, oder?
Dein Code produziert undefiniertes verhalten. Da kommt halt was lustiges raus.
Ist wie russisches Roulette spielen. Da kann man sich auch nicht beschweren dass nach 2 mal abdrücken immer noch nix passiert ist aber beim 3. mal schon.
-
sorry falsche Info bei volatile gibt er den neuen Wert also 10 aus !!!
Also dann passts ja
Meine const Variable wurde erfolgreich verändert.Warum er ohne Variable immer noch den alten Wert 3 ausgibt liegt daran dass er den Wert in einem Prozessor Register nochmal gespeichert hatte.
-
blurry333 schrieb:
Warum er ohne Variable immer noch den alten Wert 3 ausgibt liegt daran dass er den Wert in einem Prozessor Register nochmal gespeichert hatte.
Hast du dir das ganz alleine ausgedacht?
-
blurry333 schrieb:
Warum er ohne Variable immer noch den alten Wert 3 ausgibt liegt daran dass er den Wert in einem Prozessor Register nochmal gespeichert hatte.
Nein es liegt daran, dass er ohne volatile dein cout << x zu cout << 3 optimiert. Darf er ja, x ist ja konstant.
-
Wenn wir schon bei Optimierungen sind, was könnte man denn hier optimieren
Ich habs grade mehrmal ausgeführt und es kam immer dasselbe raus , auch wenn ich sum als volatile deklariert hatte.sum = 0; for ( i = 0; i < n; i++ ) sum += a[i];
-
blurry333 schrieb:
Wenn wir schon bei Optimierungen sind, was könnte man denn hier optimieren
Ich habs grade mehrmal ausgeführt und es kam immer dasselbe raus , auch wenn ich sum als volatile deklariert hatte.sum = 0; for ( i = 0; i < n; i++ ) sum += a[i];Wenn die Elemente im a die selbe sind, kommt auch immer das selbe raus

-
Wie müßte der Code ausschauen , damit durch Compileroptimierung ein Problem entsteht ?
-
blurry333 schrieb:
Wie müßte der Code ausschauen , damit durch Compileroptimierung ein Problem entsteht ?
Im Allgemeinen lassen Compileroptimierung keine Probleme entstehen, höchstens Programmierer, die Wissen nicht, was sie tun.
-
blurry333 schrieb:
Wie müßte der Code ausschauen , damit durch Compileroptimierung ein Problem entsteht ?
zum Beispiel, wenn eine als const markeirte Variable verändert wird.
Das Geheimnis ist nämlich, dass der C++ Standard für solch einfache Typen wie int erlaubt, dass die Variable gar nicht physisch vorhanden sein muss. Der Unterschied zwischen const und volatile const ist, dass du dem Compiler mitteilst: "übrigens, wenn ich sage, dass das const ist, lüge ich. entweder ich oder ein anderer Prozess wird das wieder ändern und zwar zu zufälligen Zeitpunkten."
ansonsten kannst du mit nicht standardkonformen code noch beliebig lustiges verhalten erzeugen. Programmeir einfach standardkonform, dann musst du solche Fragen nicht stellen.
-
Wenn wir schon bei Optimierungen sind, was könnte man denn hier optimieren
Wie müßte der Code ausschauen , damit durch Compileroptimierung ein Problem entsteht ?
Ich verstehe den Zusammenhang der beiden Fragen nicht.