【问题标题】:My Pascal program is warning me about unreachable code我的 Pascal 程序警告我有关无法访问的代码
【发布时间】: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;`,那么为什么你的编译器应该发出这些警告并不明显
  • 您发布的代码中没有任何内容无法访问,这意味着这可能不是您的实际代码。 无法访问的代码总是意味着有一个永远不会运行的ifelse 分支,或者在导致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


【解决方案1】:

忽略警告。

真的,第一行就是我想说的,但我收到了 StackOverflow 的警告,说我的答案太短了。讽刺的是,在回答有关警告的问题时收到警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-22
    • 2011-01-17
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2013-07-27
    • 2019-02-21
    • 1970-01-01
    相关资源
    最近更新 更多