pascal中ord可以进行逻辑判断的原理是什么?

来源:百度知道 编辑:UC知道 时间:2024/04/30 00:00:08
在Pascal语言中,函数ord可以对一些情况进行逻辑判断,请教各位高手,这其中的原理是什么?ord本身所具有的不就是将字符转化成ACSII码么?

为了方便各位考虑或理解我的问题,我这里有一道例题(附有答案)。
例题:
警察局抓了a,b,c,d四个偷窃嫌犯,其中一人是真正的小偷。审问中:
a说:我不是小偷
b说:c是小偷
c说:小偷肯定是d
d说:c冤枉人
现在已经知道四人当中有三人说的是真话,一人说假话,请问到底是是小偷?

程序如下:
var thief:char;
begin
for thief:='a'to'd'do
if ord(thief<>'a')+ord(thief='c')+ord(thief='d')+ord(thief<>'d')=3 then writeln('the thief is',thief);
end.(答案应该没问题,当然,因为我不太明白,所以检查不出问题来,这是书上的答案)

万谢各位!!
如果像LoraBit所说的那样,ord(true)=1,ord(false)=1的话,那么这整个算式应该为4对不对啊~~~

哦,我来解释一下LoraBit的答案。他的答案存在问题。就是说ord(true)=1
ord(false)=1 是错的,应该是ord(true)=1
ord(false)=0,这样一来, ord(thief<>'a')+ord(thief='c')+ord(thief='d')+ord(thief<>'d')通过循环得到的thief的结果如果相加等于3,那么就成立了

貌似是这样的
ord(true)=1
ord(false)=1
这个是统计
thief<>'a' thief='c' thief='d' thief<>'d'
这几个条件中正确的个数.

-----
只需要任意满足3个条件