我试图找出将使用 Free Pascal case 语句的示例传递给简单 if 语句的正确方法。

用例是

begin usingCaseStatements;

var
  user_age : Integer;

begin

  Writeln('Please enter your age');
  Readln(user_age);

  case user_age of
  1..12 : Writeln('You are too young');
  else
    Writeln('Invalid input');
  end;

  Writeln('Please any key to terminate the program');
  Readln();
end.

-----使用if语句--------
begin usingCaseStatements;

var
  user_age : Integer;

begin

  Writeln('Please enter your age');
  Readln(user_age);

  if user_age in 1..12 then
    Writeln('You are too young')
  else
    Writeln('Invalid input');
  Writeln('Please any key to continue');
  Readln();
end.

我试过在没有任何运气的情况下替换 if 语句 snipet 中的“in”
有一次我尝试做 if (user_age = 1..12) then 并且它只给了我一个错误,编译器指出该语句正在等待 ')' 但它找到了 .. 相反。我对 FPC 非常陌生,因此非常感谢帮助和提示。

最佳答案

IN 测试集合,而不是范围。正如 TLama 已经评论过的,您可以使用 [1..12] 定义一个包含范围的集合。

不过,大多数 PC Pascal 仅支持最多 256 个元素的集合大小,因此 josifoski 推荐的解决方案从长远来看会更实用。

关于range - 检查数字是否在自由帕斯卡的范围内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24993971/

10-10 09:53