Downto-Operator

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Downto-Operator

Beitrag von Xin » Di Mär 17, 2015 10:07 am

Ist euch eigentlich schon der Down-To-Operator aufgefallen?
Eigentlich ganz klever, oder? ;-)

Code: Alles auswählen

#include <stdio.h>

int main()
{
  char array[100];
  int index = 100;

  while( index --> 0 )
    array[ index ] = '\0';

  return 0;
}
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Downto-Operator

Beitrag von cloidnerux » Di Mär 17, 2015 10:12 am

Ist euch eigentlich schon der Down-To-Operator aufgefallen?
Eigentlich ganz klever, oder? ;-)
Ich hab mich erst gefragt, mit welchem Standard das eingeführt wurde.
Jetzt hab ich es aber verstanden :D
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Downto-Operator

Beitrag von Xin » Di Mär 17, 2015 10:22 am

cloidnerux hat geschrieben:Ich hab mich erst gefragt, mit welchem Standard das eingeführt wurde.
Explizit standardisiert ist er nicht. Funktioniert aber auf allen gängigen C und C++ Compilern. Ein De-Facto-Standard gewissermaßen.
Ich habe ihn aber auch erst heute zufällig entdeckt, da er - mangels expliziter Standardisierung - auch eher selten erwähnt wird. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Onraku
Beiträge: 43
Registriert: Fr Sep 09, 2011 2:14 pm

Re: Downto-Operator

Beitrag von Onraku » Di Mär 17, 2015 7:29 pm

Das ist doch kein "eigenständiger" Operator, oder?
Ohne das jetzt zu kompilieren,

Code: Alles auswählen

 while ( (index--) > 0 ) {} 
funktioniert doch genauso...

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Downto-Operator

Beitrag von Xin » Mi Mär 18, 2015 12:03 am

Hehehe, es ist kein eigenständiger Operator. Aber es sieht passend aus und funktioniert.

Code: Alles auswählen

while( index-- > 0 )
wäre die üblichere Formatierung.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Onraku
Beiträge: 43
Registriert: Fr Sep 09, 2011 2:14 pm

Re: Downto-Operator

Beitrag von Onraku » Do Mär 19, 2015 7:02 pm

Hm, ich mag das nicht! Zumindest halte ich es für gefährlich, sich Operatoren zu merken, die gar keine sind. Klar, das Beispiel funktioniert, und sieht auch soweit logisch aus. Wenn ich das jetzt dauernd so benutzen würde, schreib ich irgendwann, konsequenter Weise:

Code: Alles auswählen

int a=10;
int b=50;
while (a --> b)

anstatt

for (a; a<b; a++)
und dann wäre ich extrem verwirrt. Erst recht wenn ich als Anfänger eine solche Zeile in fremden Code entdecke und modifizieren will...

...False Friends in Programming Languages...

Benutzeravatar
darksider3
Beiträge: 347
Registriert: Fr Sep 14, 2012 6:26 pm
Wohnort: /dev/sda1
Kontaktdaten:

Re: Downto-Operator

Beitrag von darksider3 » Do Mär 19, 2015 9:05 pm

Naja, im grunde ist es im Standard als Maximal Munch( Wikipedia dazu) definiert. Unter anderem der Grund, warum sowas wie:

Code: Alles auswählen

list<vector<int>> example; //error
... nicht funktioniert, aber dafür...

Code: Alles auswählen

list < vector<int> > example; //ok
funktioniert.

Die Frage, ob es nun schlechter Stil ist... ist wohl wie jede Stilfrage ansichtssache. Ich finde "a-->b" ehrlich gesagt sehr angenehm. Nur müsste es mal auch den Anfängern erklärt werden. :-)
effizienz ist, wenn ich ein loch bohre und hinterher mein nachbar auch ein bild aufhängen kann... ^^
Meine Homepage und der Microblog von mir :)
Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Downto-Operator

Beitrag von Xin » Do Mär 19, 2015 11:19 pm

darksider3 hat geschrieben:Naja, im grunde ist es im Standard als Maximal Munch( Wikipedia dazu) definiert. Unter anderem der Grund, warum sowas wie:

Code: Alles auswählen

list<vector<int>> example; //error
... nicht funktioniert, aber dafür...

Code: Alles auswählen

list < vector<int> > example; //ok
funktioniert.
Das war früher so, aber das sollte heute funktionieren.
darksider3 hat geschrieben:Die Frage, ob es nun schlechter Stil ist... ist wohl wie jede Stilfrage ansichtssache. Ich finde "a-->b" ehrlich gesagt sehr angenehm. Nur müsste es mal auch den Anfängern erklärt werden. :-)
Ich wüsste nicht, weshalb das schlechter Stil ist. Es ist im ersten Moment verwirrend, wenn man es verstanden hat, wird es zufälligerweise passend. Ich werde die Formatierung trotzdem nicht verwenden, weil es halt nur zufällig passend aussieht. Meine Programme sollen nicht zufälligerweise tun, wonach sie aussehen, sondern es soll klar herauszulesen sein, dass ich wusste was ich tat, als ich es schrieb.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Onraku
Beiträge: 43
Registriert: Fr Sep 09, 2011 2:14 pm

Re: Downto-Operator

Beitrag von Onraku » Fr Mär 20, 2015 7:58 pm

darksider3 hat geschrieben:Ich finde "a-->b" ehrlich gesagt sehr angenehm. Nur müsste es mal auch den Anfängern erklärt werden. :-)
Ich auch! Allerdings würde ich bei einem "-->" (ich nenn's mal nicht 'Down-To' sondern 'von-bis-Operator') erwarten, dass er von von a nach b hochzählt, falls a<b, und runter falls a>b. Schon ist Schluss mit passend aussehen UND funktionieren.

Maximal munch: Könnte man ja einschränken, in dem ein solcher Operator auf Schleifenköpfe begrenzt wird.

Aus dem Bauch raus fühlt sich das bei for-Schleifen auch besser an, als bei while-Schleifen. Weil beide Intervallgrenzen (als Variable) bekannt sind. 'while' fühlt sich eher nach main-loop an.

Ich bin da nicht ganz bewandert, aber gibt es in Python nicht etwas "intelligentere" Schleifenköpfe?
So à la "für jedes Element e aus Menge M mach..."

In C for-Schleifen mit einem (i=a; i<b; i++)-Kopf hätte ich oft gerne nur zwei Argumente, die beiden Intervallgrenzen, der dritte sollte bei Weglassen implizit als 'i++' interpretiert werden (oder i-- falls a>b).

Swordfish_
Beiträge: 2
Registriert: Di Mär 03, 2015 6:14 am

Re: Downto-Operator

Beitrag von Swordfish_ » Fr Mär 20, 2015 11:57 pm

Xin hat geschrieben:Ist euch eigentlich schon der Down-To-Operator aufgefallen?
Das ist der "fliegt gegen" Operator ... https://www.c-plusplus.net/forum/p2445006#2445006 ... tooo late :p

Antworten