{..} in ( ? : ) Ausdruck



  • Hallo,
    gerade habe ich zu meiner Überraschung festgestellt, dass mein
    Compiler ( g++ (GCC) 4.1.2 ) folgendes Stück Code compiliert und
    ausserdem auch noch das tut, was man erwarten würde.

    #include <iostream>
    using namespace std;
    
    int main()
    {
      int a;
      const char* foo=0;
      const char* bar=0;
    
      a=0;
      cout << ( ({foo="hallo1";bar="welt1";a==0;}) ? foo : bar ) << endl;
      a=1;
      cout << ( ({foo="hallo2";bar="welt2";a==0;}) ? foo : bar ) << endl;
    
    }
    

    Ist es wirklich erlaubt einen {...} Block in runden Klammern versteckt
    in den ( ? : ) Operator zu packen, oder ist das ein Bug oder gar eine Erweiterung vom g++?



  • Erweiterung.


  • Mod

    JoeX schrieb:

    Ist es wirklich erlaubt einen {...} Block in runden Klammern versteckt
    in den ( ? : ) Operator zu packen, oder ist das ein Bug oder gar eine Erweiterung vom g++?

    Erweiterung.



  • Danke!


Anmelden zum Antworten