2013-04-15 52 views
2

我是C的新手。對不起,有這樣一個基本問題。遞增數組索引inline

int ArrayIndex = 0; 
int intArray[ArrayIndex++] = somevalue; 

我看過一本書,說:當進行準確後綴遞增/遞減不是一個簡單的問題回答。這本書還隱約地提到了一個叫做sequence points的概念來回答這個問題。它說更新值[遞增/遞減]將發生在前一個和下一個序列點之間。這種序列點的例子是表達式語句的結尾。

我的問題是,上述代碼段總是將所有編譯器/平臺中的some value分配給數組索引零並增加ArrayIndex?是否有可能ArrayIndex先遞增,然後將某個值賦給intArry [1];?

任何人都可以點亮一下嗎?

回答

2

我的問題是,將上面的代碼片斷總是分配一些值 到數組索引零和增量ArrayIndex,在所有 編譯器/平臺?

答:是的

是否有機會ArrayIndex先增加再 someValue中被分配到intArry [1] ;?

答:如果您使用

int intArray[++ArrayIndex] = somevalue; 

這將增加ArrayIndex,然後將值分配給數組索引1個

2

++ArrayIndex增量ArrayIndex和計算結果爲ArrayIndex新值。

ArrayIndex++評估原值的ArrayIndex,和增量ArrayIndex

這應該回答你的問題。 (提示:答案是肯定的)。

+1

命名約定在這裏很不重要。 –

+0

@AlexeyFrunze你是對的。只要他一致,這不應該打擾。 – Maroun

+0

並非如此。首先,命名約定沒有被問到。其次,它們對團隊/項目是主觀的或特定的。第三,由於所選擇的命名約定,問題的可讀性並不低(例如您在其他一些問題中看到的格式不正確的長代碼)。所以,根本沒有一個客觀的理由來指出它。 –