表达式22 or 33 and 44=

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:33:05
是pascal中一道题

哈哈,楼上的错了,在C语言里面结果才是1,PASCAL不是这样的。PASCAL 里面 AND 、OR既是逻辑运算也是按位运算,由于AND优先,那么计算过程如下:
22 OR 33 AMD 44
= 22 OR 32
= 44

按为运算需要讲解吗?就是对相应数的二进制位进行逻辑运算,这三个数的二进制分别是:
22的二进制是0001 0110 ($16)
33的二进制是0010 0001 ($21)
44的二进制是0010 1100 ($2C)
那么 33 AND 44 = 0010 0000 = 32
再有 22 OR 32 = 0011 0110 = 54

我们看看下面的程序和运行结果,可以验证以上解释:

E:\ygb>type a.dpr
{$apptype console}
PROGRAM exp;
begin
writeln(22 or 33 and 44);
end.
E:\ygb>dcc32 a.dpr
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
a.dpr(5)
6 lines, 0.28 seconds, 10620 bytes code, 1801 bytes data.

E:\ygb>a.exe
54

E:\ygb>

true或1

1