[英]Reversing a null range in Ada
一段自動生成的Ada代碼具有以下這一行:
for digit in reverse 0 .. 1 loop
...
end loop;
這會導致gnat ada發出:
sourcefile.adb:79:41:警告:循環范圍可能為null
sourcefile.adb:79:41:警告:邊界可能錯誤
我想要的是要用digit = 1然后是digit = 0 ...來執行循環,但是0..1 是空范圍,因此反轉它仍會產生空范圍,對嗎? 還是?
您正在使用什么Ada編譯器和版本?
使用GNAT GPL 2013編譯時不會出現警告或錯誤:
with Ada.Text_IO; use Ada.Text_IO;
procedure Reverse_Loop_Test is
begin
for Digit in reverse 0 .. 1 loop
Put_Line(Integer'Image(Digit));
end loop;
end Reverse_Loop_Test;
並按預期運行:
/home/wintermute/sandbox/reverse_loop_test
1
0
[2013-10-02 19:42:24] process terminated successfully (elapsed time: 00.10s)
我想要的是要用digit = 1然后是digit = 0 ...來執行循環,但是0..1是空范圍,因此反轉它仍會產生空范圍,對嗎? 還是?
0..1
不是空范圍。 它是整數{0,1}的集合-您正在考慮的空范圍是 1..0
,所以我會問您正在編譯的文件是否確實是您認為正在編譯的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.