使用 Dev-Pascal 的十六进制到十进制 Pascal 错误非法表达式
Hexadecimal to Decimal Pascal Error Illegal Expression using Dev-Pascal
我正在创建一个将十六进制数转换为十进制数的程序。这是代码:
program hexadesimal;
uses crt;
var
d, j, l, pow, y:integer;
x:longint;
h:string;
label z;
begin
z:
readln(h);
d:=0;
l:=length(h);
for j:=1 to length(h) do
begin
if (h[j] = 'A') then h[j] = '10';
if (h[j] = 'B') then h[j] = '11';
if (h[j] = 'C') then h[j] = '12';
if (h[j] = 'D') then h[j] = '13';
if (h[j] = 'E') then h[j] = '14';
if (h[j] = 'F') then h[j] = '15';
l:=l - 1;
pow := power(16, l);
val(h[j], x, y);
d := d + (x * pow);
end;
writeln(d);
readln;
end.
然而,当我编译时,错误出现非法表达式,它指向这些行:
if (h[j] = 'A') then h[j] = '10';
if (h[j] = 'B') then h[j] = '11';
if (h[j] = 'C') then h[j] = '12';
if (h[j] = 'D') then h[j] = '13';
if (h[j] = 'E') then h[j] = '14';
if (h[j] = 'F') then h[j] = '15';
我该怎么办?
第if (h[j] = 'A') then h[j] = '10';
行没有意义。 h[j]
指的是字符串中的一个字符,因此它不能等于一个字符串(包含 2 个或多个字符),如 '10'。如果您希望将值分配给您需要使用 :=
运算符的变量。 h[j] = '10'
不是赋值符,而是比较运算符,在您的情况下会导致 FALSE
。换句话说,您将获得以下结构:if (TRUE/FALSE) then FALSE;
我正在创建一个将十六进制数转换为十进制数的程序。这是代码:
program hexadesimal;
uses crt;
var
d, j, l, pow, y:integer;
x:longint;
h:string;
label z;
begin
z:
readln(h);
d:=0;
l:=length(h);
for j:=1 to length(h) do
begin
if (h[j] = 'A') then h[j] = '10';
if (h[j] = 'B') then h[j] = '11';
if (h[j] = 'C') then h[j] = '12';
if (h[j] = 'D') then h[j] = '13';
if (h[j] = 'E') then h[j] = '14';
if (h[j] = 'F') then h[j] = '15';
l:=l - 1;
pow := power(16, l);
val(h[j], x, y);
d := d + (x * pow);
end;
writeln(d);
readln;
end.
然而,当我编译时,错误出现非法表达式,它指向这些行:
if (h[j] = 'A') then h[j] = '10';
if (h[j] = 'B') then h[j] = '11';
if (h[j] = 'C') then h[j] = '12';
if (h[j] = 'D') then h[j] = '13';
if (h[j] = 'E') then h[j] = '14';
if (h[j] = 'F') then h[j] = '15';
我该怎么办?
第if (h[j] = 'A') then h[j] = '10';
行没有意义。 h[j]
指的是字符串中的一个字符,因此它不能等于一个字符串(包含 2 个或多个字符),如 '10'。如果您希望将值分配给您需要使用 :=
运算符的变量。 h[j] = '10'
不是赋值符,而是比较运算符,在您的情况下会导致 FALSE
。换句话说,您将获得以下结构:if (TRUE/FALSE) then FALSE;