0

我正在尝试制作一个(非常)小代码来确定给定变量 x 是数字还是字母。它必须手动完成,没有 type(x) 之类的东西——假设 Pascal 中有这样的东西——。

我的计划是一一验证 x 不是数字,然后我写了这个:

(*let ischar be a boolean and let x be a letter or a number.*)
for i:=0 to 9 do
begin
    if (x=i) then
        ischar = false;
end;

if ischar then
    write('x is a number!');
else
    write('x is a letter');

如果 x 是一个字母,我希望测试“x=i”会返回 false,但由于以下错误,我什至无法编译:“Got char, expected long int”。似乎我无法比较 x 和 i,我知道这一点,但我坚持认为在这种情况下 if 会返回 false。还有另一种方法可以“手动”执行此操作吗?

4

1 回答 1

4

通常不可能直接比较不同类型的变量。编译错误提示x被声明为 a chari而是 a longint

可用选项可能取决于您使用的 Pascal 编译器。
我唯一的经验是使用 Borland(后来的 CodeGear 和 Embarcadero)产品“Turbo Pascal”和“Delphi”。

这些编译器具有ord给出序数类型数值的功能。在 a 的情况下char,该ord函数应该为您提供字符的 ASCII 码,您可以测试它是否在 '0'..'9' 的代码范围内。

你不需要for循环。这应该有效:

if (ord(x)<48) or (ord(x)>57) then ischar:=true else ischar:=false;

编辑:这是该ord函数的 Free Pascal 文档:
http ://www.freepascal.org/docs-html/rtl/system/ord.html

于 2013-09-20T01:15:44.940 回答