[英]Ada - Any defined behavior for incrementing past end of range?
如果我在ADA中定義的范圍是從1 ... 1000,那么如果我增加到1000以上,ADA規范是否定義了行為?
例如:
type Index is range 1..1000;
idx : Index := 1;
procedure Increment is
begin
idx := idx + 1;
end
當我用idx = 1000調用Increment時,會發生什么?
您的程序將失敗,並顯示CONSTRAINT_ERROR
。 但是,這不是因為您最終嘗試將idx
設置為1001。它的初始值0也不在您的預定義范圍內。 幸運的是,編譯器已經在編譯時警告您這一事實。
如果您已將idx
設置為允許的值,然后以編譯器無法靜態檢測的方式將其增加到其上限之外,則將再次引發CONSTRAINT_ERROR
(但在編譯時不會有任何提示)。 從技術上講,此錯誤是一個異常 ,您可以像使用該語言的任何其他異常一樣來處理。
注意:我有意鏈接到上面的古老Ada '83規范,以表明自行為開始以來,這種行為已成為該語言的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.