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