簡體   English   中英

具有下限和上限的C ++數組定義?

[英]C++ Array Definition with Lower and Upper Bound?

我女兒的第12個標准C ++教科書就是這么說的

數組的符號可以(也)給出如下:數組名稱[下限L,上限U]

這對我來說是一個驚喜。 我知道Pascal有這個符號,但是C ++? 從來沒有見過這個。 我在她規定的編譯器(古老的Turbo C ++ 4.5)中編寫了一個快速程序,並且不支持它。 在Stanley Lippman的書中也沒有找到這種語法。 互聯網搜索並未引發這種情況。 或者也許我沒有正確搜索?

那么,這是一個有效的聲明嗎?

不,這不是真的,除非有人重載了逗號運算符,並且可能[]也不太可能。 (Boost Spirit兩者都有,但原因各不相同)。

在沒有任何重載的情況下, Array[x, y]在語法上是無效的,因為大小必須是常量表達式,並且這些不能包含逗號運算符; 這樣做會使它成為一個賦值表達式

把書燒掉,把Stroustrup放進她的聖誕襪!

這是無效的,來自草案C ++標准部分8.3.4 數組聲明必須是以下形式:

D1 [constant-expressionopt] attribute-specifier-seqopt

我們可以從部分5.19 常量表達式 的常量表達式語法是:

constant-expression:
   conditional-expression

這個語法不允許我們去逗號運算符做這樣的事情:

int a[ 1, 2 ] ;
        ^

正如其他人所暗示的那樣,因為條件表達式沒有逗號運算符的路徑。 雖然如果你添加括號,我們可以到逗號運算符,因為條件表達式允許我們到達獲得us () primary-expression ,所以以下內容是有效的:

int a[ (1, 2) ] ;
       ^   ^

注意,在C ++ 03中,明確禁止在常量表達式中使用逗號運算符。

暫無
暫無

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

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