2014-10-19 37 views
0

我發現,你可以在C++中做這樣的事情:C++用括號表達

int a = ({ 
    int x = 12 + 3; 
    x*x + 7; 
}); 

或像這樣:

bool x[] = {false, true, true, true, false}; 
if (({bool b = false; for (int i; i < 5; i++) if (x[i]) b = !b; b;})) 
    printf("aaaaaaa\n"); 

然後我發現,我不能這樣做這樣的:

int a = ({if (2 > 1) return x; x*x;}); 

也不

int a = ({if (2 > 1) x; x*x;}); 

也不

int a = ({x; if (1 > 2) printf("aaaa\n");}); 

它是什麼?從什麼時候開始允許?如何在結束括號之前返回結果?

回答

0

這是一個語言擴展,它不是標準的C++。