Variablen erhöhen
-
if (ivar == 0) {
ivar = 1;}
else {
ivar = ivar * 2;
}
-
Es ist gar keine Aufgabenstellung...
Ich habe das Problem in einem eigenen Projekt.
Die Funktion ist ca. 1700 Zeilen lang und bestehlt aus einem riesigen switch case: . Da man in case keine Variable anlegen kann müsste ich eine nuer Variable machen... was ich vermeiden wollte, da dieser Code nur in einem Testfall ausgeführt werden muss. Ich hatte gehoft, dass es mit mit einem Kniff von 0<<1 auf 1 komme oder so...
-
if (ivar == 0) {
das ist nicht geben, da iVar nicht initialisiert und nicht Global ist.
-
Binggi schrieb:
Da man in case keine Variable anlegen kann
Doch, kannst du. Du musst nur einen neuen Scope aufmachen (geschweifte Klammern), und diese Variable kann selbstverständlich nur in diesem Scope verwendet werden. Solange das für deine Zwecke klargeht, kannst du es also so machen:
switch(val) { case 5: { int superLocalVar=5; } }
-
Binggi schrieb:
if (ivar == 0) {
das ist nicht geben, da iVar nicht initialisiert und nicht Global ist.
Auch eine nicht initialisierte Variable kannst du auf einen Wert prüfen. Und global muss sie nicht sein. So, wie du es gepostet hast, ist iVar gültig an der Stelle, an der die drei Fragezeichen erreicht werden.
-
_matze schrieb:
Binggi schrieb:
if (ivar == 0) {
das ist nicht geben, da iVar nicht initialisiert und nicht Global ist.
Auch eine nicht initialisierte Variable kannst du auf einen Wert prüfen.
Es geht darum, dass ivar nicht 0 ist, wenn es uninitialisiert ist, da es sich nicht um eine globale Variable handelt.
-
SeppJ schrieb:
_matze schrieb:
Binggi schrieb:
if (ivar == 0) {
das ist nicht geben, da iVar nicht initialisiert und nicht Global ist.
Auch eine nicht initialisierte Variable kannst du auf einen Wert prüfen.
Es geht darum, dass ivar nicht 0 ist, wenn es uninitialisiert ist, da es sich nicht um eine globale Variable handelt.
Klar, hast Recht. Denkfehler...
-
und ich dachte, eine Variable ist erst mal (bei numerisch) mit 0 initialisiert,
so wie bei Abap
-
switch(val)
{
case 5:
{
int superLocalVar=5;
}
}Aud das bin ich gar nicht gekommen, xD
Wäre eine brauchbare Lösung...
Ich habe mal gelesen, dass globale Variablen mit 0 bzw /0 initialisiert werden. Ist das Compilerabhängig?
Danke
-
Evtl. gibt es auch eine Compileroption, die neue Variablen gleich mit 0 besetzt.
-
Binggi schrieb:
Ich habe mal gelesen, dass globale Variablen mit 0 bzw /0 initialisiert werden. Ist das Compilerabhängig?
Nein, das ist immer so. Variablen mit statischer Speicherdauer werden mit Null initialisiert.