[英]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.