【发布时间】:2020-08-24 21:18:25
【问题描述】:
为什么 pascal 在 (8,21) 和 (8,12) 行给我无法访问的代码。我不知道为什么它是一个简单的代码,用于将 3 位八进制数转换为十进制。该程序没问题,因为它给了我正确的结果,但我不知道为什么 free pascal 给了我程序该部分中无法访问的代码。
我在 Linux 上使用的是 3.0.4 freepascal,我只使用我发布的命令进行编译,我没有修改 freepascal 的任何内容我使用以下命令编译fpc -Co -Cr -Miso -gl
PROGRAM Ejercicio21;
VAR decimal,octal,a,b,c:integer;
BEGIN
writeln('Ingrese el valor decimal: ');
readln(octal);
a:=(octal div 100);
b:=(octal mod 100) div 10;
c:=octal mod 10;
decimal:=(a*sqr(8)+(b*8)+c);
writeln('Octal',octal,'=',decimal);
END.
【问题讨论】:
-
编译器警告往往特定于正在使用的编译器,因此您的 q 应该说明您正在使用哪个编译器。它是哪一个? Fwiw,我尝试使用 FreePascal 编译你的代码,它编译时没有任何警告,如果它们指的是行 `c:=octal mod 10;`,那么为什么你的编译器应该发出这些警告并不明显
-
您发布的代码中没有任何内容无法访问,这意味着这可能不是您的实际代码。 无法访问的代码总是意味着有一个永远不会运行的
if或else分支,或者在导致return之前存在的代码。 -
嘿,编译器是freepascal,我不知道为什么它的代码可以访问:/
-
我在安装了 FPC 3.0 和 Lazarus 1.6.2 的 Ubuntu VM 中尝试了您的代码,并使用了您引用的命令行开关 fpc -Co -Cr -Miso -gl。使用这些开关,我会收到第 8 行和第 9 行的“无法访问代码”警告。删除 -Miso 开关可避免警告。我认为你应该在forum.lazarus.freepascal.org 报告这种行为,并询问它是否是预期的。顺便说一句,鉴于我可以使用您编辑的 q 中的信息来重现这一点,我投票重新打开它。
-
问题的最小案例:
program sample; var a:integer; begin a := 100; a := a mod 100; end.错误总是出现在mod运算符上。你只需要-Miso选项来生成它。
标签: compiler-errors pascal freepascal