Experiment: Wie viele Schlüsselwörter in einen Ausdruck?



  • 314159265358979 schrieb:

    Ich war vielleicht zu ungenau, ich meine genau 1 Statement. Lambdas zählen also nicht.

    Nein. Oben hast Du einen Ausdruck verlangt. Ein Statement kann auch for und do und switch und verschachtelst alles haben.
    Nur ein Statement zu verlangen wäre zwar viel cooler, was die Anzahl der Schlüssenwörter angeht, aber ich fürchte, das wird zu einfach. Sozusagen, daß ein jeder fast alle unterbringt und es dann am Ende nur noch an eunem Trick hängt, wie dem sonderbaren return throw. Mir scheint, daß der Ausdruck als Herausforderung stärker den Profifricker vom Hobbyfrickler trennt.



  • Ich kenne mich nicht so aus, was nun was ist. Dann sei es ein Ausdruck.



  • typename std::vector<bool>::iterator
    

    ausserhalb eines Templates ist kein gültiges C++ :p



  • Richtig gestellt. Und jetzt dürft ihr auch mal Vorschläge zeigen. 😉



  • #include <typeinfo>
    #include <vector>
    #include <ctime>
    #include <iostream>
    #include <limits>
    
    int shit()
    {
        using namespace std;
        auto nullptr=(void*)0;//nur weil gcc den noch nicht kennt
        auto a=0,b=0,c=0,d=0;
        return
        (reinterpret_cast<unsigned long>((new class vector<volatile tm* //6
        >())->operator[](0)) or (signed short int) sizeof(typeid(delete //8
        (enum float_denorm_style*)nullptr)))+(float)static_cast<double> //5
        (wchar_t ( d and_eq c not_eq not(a or_eq b xor_eq 1 xor 2 )))+( //7
        true bitor (char32_t() bitand alignof(char16_t) and (char(compl //9
        (bool(false)))))) + vector<decltype(throw const_cast<tm*>(      //5
        dynamic_cast<const struct tm*>(new tm)))*>().size();            //4
                                                                        //=44
    }
    
    int main()
    {
        shit();
    }
    

    44, wenn ich mich nicht verzählt habe.



  • 😋



  • volkard schrieb:

    44, wenn ich mich nicht verzählt habe.

    new doppelt und dafür typename vergessen.



  • volkard schrieb:

    #include <typeinfo>
    #include <vector>
    #include <ctime>
    #include <iostream>
    #include <limits>
    
    int shit()
    {
        using namespace std;
        auto nullptr=(void*)0;//nur weil gcc den noch nicht kennt
        auto a=0,b=0,c=0,d=0;
        return
        (reinterpret_cast<unsigned long>((new class vector<volatile tm* //6
        >())->operator[](0)) or (signed short int) sizeof(typeid(delete //8
        (enum float_denorm_style*)nullptr)))+(float)static_cast<double> //5
        (wchar_t ( d and_eq c not_eq not(a or_eq b xor_eq 1 xor 2 )))+( //7
        true bitor (char32_t() bitand alignof(char16_t) and (char(compl //9
        (bool(false)))))) + vector<decltype(throw const_cast<tm*>(      //5
        dynamic_cast<const struct tm*>(new tm)))*>().size();            //4
                                                                        //=44
    }
    
    int main()
    {
        shit();
    }
    

    44, wenn ich mich nicht verzählt habe.

    Wenn du da noch´n switch-case-default-break drumrumbaust biste schon bei 48.

    Edit:
    Und in einem switch-case noch eine while-do Schleife mit continue, dann sind´s schon 51.



  • Aber dann ist es doch kein Ausdruck mehr, sondern ein Statement...



  • Wir haben doch gesagt, keine Abkürzungen, wie bitand, bitor, etc 😉
    int hast du schon bei int shit() verwendet.



  • Jetzt doch? Bitte Mal klare Spielregeln.



  • Nexus ist der Meinung, die alternativen Operatorschlüsselwörter seien doof. Und er behauptet, wir seien da einer Meinung. Das stimmt natürlich nicht. Außerdem ist die Einschränkung unnatürlich. Und sie war nur ein Vorschlag für einen alternativen Wettbewerb, also nicht ein Regeländerungsvorschlag für diesen. Und Du hast den Vorschlag nicht wie anderen Vorschlag abgesegnet. Ich hatte daher nicht angenommen, die alternativen Operatornamen seien ausgeschlossen.



  • Ich würde noch in die Spielregeln aufnehmen, daß keine Lamdas erlaubt sind.



  • Jo, Lambdas sind nicht erlaubt.



  • volkard schrieb:

    44, wenn ich mich nicht verzählt habe.

    Nicht schlecht! Dass man Standardklassen verwenden könnte, um class etc. einzusetzen, ist mir später auch noch eingefallen. Die Idee mit operator ist gut! Hast du return nicht mitgezählt?

    volkard schrieb:

    Nexus ist der Meinung, die alternativen Operatorschlüsselwörter seien doof.

    Ich finde nur doof, dass sie ohne guten Grund Schlüsselwörter sind, zumal sie genauso gut Makros sein könnten, ohne dabei sinnvolle Bezeichner zu verunmöglichen.



  • Nexus schrieb:

    Hast du return nicht mitgezählt?

    Nein.
    return ausdruck; wäre ja eine Anweisung.


Anmelden zum Antworten