簡體   English   中英

c中的匿名代碼塊

[英]Anonymous code blocks in c

這樣的陳述是什么意思?

int x  = ( { int a; scanf( "%d", &a ); a ; } ) ;

它編譯並運行相當於:

int x;
scanf( "%d", &x );

它似乎像某種匿名函數調用或其他東西,但我不確定。 我之前沒有遇到像({})這樣的陳述,我無法在網上找到任何解釋。 任何幫助將非常感謝,謝謝:)

語境:

這是擴展以下代碼中的宏時獲得的代碼:

#define SI ({int a;scanf("%d",&a);a;});
int x = SI;

這是編程競賽中某人使用的代碼。

這是一個Statement Expression。
它作為GCC支持的編譯器擴展,它不是標准C ++,因此它不可移植。
如果使用-pedantic標志編譯代碼,它會告訴你。

我的這個答案詳細討論了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM