[英]What is this strange expression in GCC/Clang?
我最近注意到GCC/Clang中有一個奇怪的有效C/C++表達式,這是我以前從未見過的。 這是C++中的示例,但類似的表達式也適用於C :
int main(){
int z = 5;
auto x = ({z > 3 ? 3 : 2;}); // <-- expression
std::cout << x;
}
它的作用是顯而易見的,但我想知道它叫什么。 由於它在MSVC中不值得,我猜它是一個非標准擴展。 但是有什么東西也適用於MSVC嗎? 特別是在C中?
它稱為語句 expr ,用於 GCC。 您的表達式({z > 3? 3: 2;})
可以翻譯為
if (z > 3) {x = 3;} else {x = 2;}
從文檔:
括在括號中的復合語句可能會在 GNU C 中顯示為表達式。 這允許您在表達式中使用循環、開關和局部變量。
換句話說,它提供了將復合語句放入表達式 position 的能力。
相關帖子:
它被稱為條件運算符。 返回將取決於條件是真還是假。
但在這種情況下: auto x = ({z > 3? 3: 2;}); // <-- 表達式
如果 Z 大於 3,則返回 3,否則返回 2。
基本語法:Expression1? 表達式2:表達式3;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.