for(;P("\n"),R--;P("\"))for(e=C;e--;P("_"+(*u++/8)%2))P("|"+(*u/4)%2)



  • for(;P("\n"),R--;P("\"))for(e=C;e--;P("_"+(*u++/8)%2))P("|"+(*u/4)%2)

    kann mir jemand diese zeile erklären
    für anfänger wenn es geht



  • Nicht ohne zu wissen was P, R usw. ist.
    So alleine lässt sich das ganze zeugs nicht kompilieren.



  • for(;P("\n"),R--;P("\"))
    {
        for(e=C;e--;P("_"+(*u++/8)%2))
        {
            P("|"+(*u/4)%2) 
        }
    }
    

    naja ob das geht ... ist übelstes rumgehacke weil du da Zeigeraddition machst usw. ... normal sollte das nicht geschluckt werden ... hmm u scheint schonmal ein Zeiger zu sein ... am ehesten ein integer ... sonnst würde da nicht 8 sondern 8.0(f) usw. stehen ... hmm ... e = C hmm der Code ist mist.



  • http://www.alice-dsl.net/cavit8/ALLESQUATSCH.htm

    wenn ihr euch diesen text mal durchlesen wollt?
    bin darauf irgendwo gestoßen
    kann mir diese zeile aber nicht erklären da ich kein C programmiere



  • die Zeile ist quatsch ... selbst wenn die Zeigeraddition beabsichtigt wäre ... was ich bezweifel ... wäre die Hälfte des Codes ein String, da \" ein " ist und dadurch das " zum abschluss des Strings fehlt ... insgesamt kommen wir also mit den ganzen " nicht ganz aus 😛



  • Eigentlich sieht der Aufruf von P in der außeren for-Schleife auch wohl so aus: P("|")
    Zumindest steht dies so in der Humor-Ecke dieser Seite:
    http://www.c-plusplus.net/geschichte.htm
    Da kommt man dann auch mit den ganzen " hin.
    Ob das ganze Zeug Sinn macht oder nicht, unterhaltsam finde ich die Story aber dennoch. 🙂

    Greetz



  • #include <cstdio>
    
    #define P(x) std::printf(x)
    const int C = 24
    
    int main()
    {
    	int R = C;
    	int e;
    	char* u = "Hello World!";
    
    	for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
    
    	return 0;
    }
    

    Geht übrigens auch C++ ;).
    C gibt die Anzahl der Reihen an... bei u hab ich einfach mal char* als Typ angenommen. Naja, vllt erkennt ja jemand den Sinn darin.

    Gruß
    Don06



  • int main() 
    {
      #define P(x) printf(x)
    
      int C,R,e;  
      char *u,sz[]="Hello World!";
    
      u=sz;
      R=2;
      C=strlen(u)/R;   
      for(;P("\n"),R--;)
      {    
        for(e=C;e--;)
        {
          P("| "+(*u/4)%2);
          if(!( (*u/8)%2) ){ P("_"); }
    
          //original
          //P("_"+(*u/8)%2);      
          u++;
        }
        P("|");
      }
    
      printf("-----------------------Kontrolle");
      u=sz;
      R=2;
      C=strlen(u)/R; 
      for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
    
      return 0;
    }
    

    wenn man das ein wenig entwirrt, ist es doch eigentlich ganz einfach. Würg!
    (*u/4) und (*u/8) sind eigentlich nur für die Verwirrung. Wichtig nur %2, was entweder 0 oder 1 sein kann.
    Zu beachten ist, das aus "" eigentlich {'','\0'} wird. Und somit zwei Zeichen oder Byte werden.

    Und der Witz liegt wohl darin, das man sagen kann, das man das da versteht und völlig logisch ist 🙂

    Na ja, so ist das Lebben.


Anmelden zum Antworten