一个TRUE OR FALSE的问题 (10分)

  • 主题发起人 主题发起人 gdljc
  • 开始时间 开始时间
G

gdljc

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一名delphi爱好者,但今天朋友遇到一个关于VFP6.0的问题,抱歉,在这里提出。
关系运算: 字符型数据是根据ASCII码值的大小进行比较。
求:not("ABC">"abc" and 20>10)的结果?
我的理解:ABC的ASCII比abc小(A是65...,a是97...),因此结果为T;
但在VFP6.0的命令窗口中输入: ? not("ABC">"abc" and 20>10),结果为:F。
为什么?求详细的解答及理由。
 
"ABC" > "abc" = False

20 >10 = True

Not (True and False) = False

对的阿

呵呵
 
Not (True and False) = False

(true and false)=F 而非 not (F)=true
这才是,啊为什么?
 
VFP中排序中排序顺序是有定义的,不同的排序顺序是不同的
要达到你朋友想要的效果,要事先指定排序顺序。

SET COLLATE TO "MACHINE"

not ("ABC">"abc" and 20>10)的结果这时才会等于 .T.
 
那从理论上讲:not("ABC">"abc" and 20>10):T还是F
 
能否具体讲一下VFP的排序顺序
 
理论上讲应该是T
 
有效的排序顺序如下

DUTCH 荷兰语
GENERAL 英语、法语、德语、当代西班牙语、葡萄牙语和其它西欧语言
GERMAN 德国电话系列
ICELAND 冰岛语
MACHINE 机器语言(早期Foxpro版本中的排序顺序的默认设置)
NORDAN 挪威、丹麦语
SPANISH 古典西班牙语
SWEFIN 瑞典语、芬兰语
UNIQWT 唯一重量

具体看VFP帮助,不同排序顺序决定逻辑公式不同的结果,没有什么理论上讲结果是什么的。
 
多人接受答案了。
 
"ABC">"abc" .f.
("ABC">"abc" and 20>10) .f.
not("ABC">"abc" and 20>10) 应为 .t.
这样理解没错,但是在foxpro的默认情况下:
"ABC">"abc" 是 .t.
 
后退
顶部