Adresse von konstanter Zahl Integer



  • Geht mit (erst in C99 verfügbaren) compound Literalen:

    void f1(int *i){ printf("%i",*i);}
    void f2(int i) { printf("%i",i);}
    
    int main()
    {
      f1(&(int){5});
      f1((int[]){5});
      f2(*(int[]){5});
      return 0;
    }
    


  • Adressen von rvalues, interessant. Macht sich C über solche Sachen überhaupt Gedanken? Wie lange lebt denn ein Compound Literal?



  • Ganz normal, innerhalb vom compound statement auto, außerhalb static.



  • OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.



  • Bashar schrieb:

    OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.

    Sonst würde man es auch nicht referenzieren können.


  • Mod

    Tachyon schrieb:

    Bashar schrieb:

    OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.

    Sonst würde man es auch nicht referenzieren können.

    Ach wäre doch eigentlich ganz cool:

    int main()
    {
     ++1;
     printf("%d", 1+1); // 4
    }
    

    🤡



  • SeppJ schrieb:

    Tachyon schrieb:

    Bashar schrieb:

    OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.

    Sonst würde man es auch nicht referenzieren können.

    Ach wäre doch eigentlich ganz cool:

    int main()
    {
     ++1;
     printf("%d", 1+1); // 4
    }
    

    🤡

    Igitt. 😮



  • Tachyon schrieb:

    Bashar schrieb:

    OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.

    Sonst würde man es auch nicht referenzieren können.

    Dagegen mithilfe von Analogien zu C++ zu argumentieren kann ich mir sparen, oder?


  • Mod

    Bashar schrieb:

    Tachyon schrieb:

    Bashar schrieb:

    OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.

    Sonst würde man es auch nicht referenzieren können.

    Dagegen mithilfe von Analogien zu C++ zu argumentieren kann ich mir sparen, oder?

    C kennt sowieso keine rvalues.



  • camper schrieb:

    C kennt sowieso keine rvalues.

    Der Standard erwähnt sie als Fußnote. Im allgemeinen Sprachgebrauch wurde die Unterscheidung zwischen lvalue und rvalue sogar für C eingeführt und sind heute im allgemeinen Informatiksprech für Sprachen mit Value-Semantik üblich.


Anmelden zum Antworten