簡體   English   中英

反轉Ada中的空范圍

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

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