簡體   English   中英

C 中的初始化列表和序列點

[英]Initializer lists in C and sequence points

C 標准聲明在初始化器中完整表達式的末尾有一個序列點,並且

initializer:

        assignment-expression

        { initializer-list }

        { initializer-list , }

initializer-list:

        initializer

        initializer-list , initializer

然而,這意味着這

int a[2] = { i = 1 , ++i };

應該沒問題有人可以解釋為什么會這樣嗎?

我不知道你在哪里看到的。 我看到https://port70.net/~nsz/c/c11/n1570.html#6.7.9p23

初始化列表表達式的求值相對於彼此的順序是不確定的,因此任何副作用發生的順序是未指定的。

應該沒問題有人可以解釋為什么

它“很好”,因為在行為中定義未指定的行為 您不知道, i = 1++i中的哪一個將首先執行或最后執行,其中一個將執行。

暫無
暫無

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

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