Ich bin das OP von CodeGolf. Es scheint, ich hatte einfach einen Tippfehler, ich wollte sagen int i=-1,c,o,w,b,e=b=w=o=c=1;
Auf diese Weise wird der zweite definierte int immer auf 1 gesetzt und die anderen können darauf eingestellt werden. Die Verwirrung ist, dass ich ursprünglich die Variable hatte, die als nächstes kommt (L = 3) als nur l (undefiniert), und ich setzte alle anderen Variablen auf e = b = w = o = c = (L = 3); was in meinen Gedanken L auf 3 setzen würde, true dafür zurück (1), dann setze den Rest auf 1.
Ein paar Tests später stellte ich fest, dass sie nur alle auf 3 setzten und nur mit arbeiteten Die spezifische Zeichenfolge, mit der ich meinen Code getestet habe. Also löschte ich sie und änderte sie, um nur L = 3 fest codiert zu sein und die anderen e=b=w=o=c=1;L=3
zu sein. Irgendwann habe ich cmd + z zu oft gedrückt und das "=" und die "1" entfernt, so dass ich nur noch e=b=w=o=c;
übrig hatte. Aufgrund der konstanten Undefiniertheit (zumindest auf meiner IDE) wurde sie immer als 0 definiert und der Fehler wurde daher nicht bemerkt.
Jetzt, wo ich es wieder korrigiert habe, dank diesem Beitrag werden die Byte-Längen gleich sind und es gab keine Notwendigkeit für irgendwelche dieser schwierigen e=b=w=o=c=1
Code sowieso, dachte ich nur die Bytelänge war anders, denn wenn ich kopieren klebte meine Funktion in einen Byte-Zähler, der zeigte, dass es 2 Bytes kleiner war (ich wusste nicht, dass ich nur einen Tippfehler hatte und 2 Bytes fehlte).
Meine IDE definiert diese Variablen immer als 0. Mein Code ist so entworfen, dass er mit allen Variablen arbeitet, die als 1 definiert sind. Die Tatsache, dass w/0 funktioniert, ist Zufall. Auch nur, weil es auf meiner IDE passiert, bedeutet es nicht, dass es auf anderen, obwohl ich es auf einigen IDEs jetzt on-line getestet habe und viele Schleifen laufen lasse und es scheint, immer Rückkehr 0. Auf jeden Fall habe ich aktualisiert meinen ursprünglichen Code, um sie auf 1 zu setzen, wie es sein sollte (das Hinzufügen von 2 Byte zu meinem Programm).
Dank für die Eingabe der jeder
ich das nicht bekommen wirklich, 'c' an den Rest der Variablen nicht initialisierten zugeordnet ist, kann ich falsch sein, aber es scheint nicht definiertes Verhalten. –
Laut [this] (http://meta.codegolf.stackexchange.com/questions/5486/is-an-answer-allowed-to-use-undefined-but-consistent-behaviour) ist konsistentes undefiniertes Verhalten in Ordnung Für Code-Golfen, vielleicht hat der Schöpfer des Programms das ausgenutzt. – Downvoter
Wenn 'i' automatische Speicherdauer hat, ist dies wohlgeformt. Wenn es sich um eine statische Speicherdauer handelt, ist es fehlerhaft, da zum Initialisieren der Variablen konstante Ausdrücke erforderlich sind. – Downvoter