You need to enable JavaScript to run this app. Delphi 10.4.2版本Boolean运算结果与预期不符问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.4.2版本Boolean运算结果与预期不符问题求助

问题根因说明

你混淆了Delphi中And运算符的两种使用场景,运行结果符合语法规则,并非版本BUG:

  • 当And两侧操作数为整数类型时,执行按位与运算:逐位比对两个数的二进制位,仅当对应位都为1时结果位才为1。
    1的二进制为0001,14的二进制为1110,逐位与运算后结果为0000,对应十进制数值0,和你实际运行结果一致。
  • 你认知中的“逻辑与运算”要求操作数为布尔类型:仅当两侧表达式都为True时结果为True。如果要得到你预期的1,需要先把整数转为布尔表达式判断,再做逻辑与运算,最后用Ord()函数将布尔值转为整数(Delphi中Ord(True)固定返回1,Ord(False)固定返回0)。

修正后代码示例

procedure TForm1.Button1Click(Sender: TObject);
var j,k, m: integer;
begin
  j := 1; m := 14;
  // 逻辑与运算后转整数,得到预期结果1
  k := Ord((j <> 0) And (m <> 0));
end;

内容的提问来源于stack exchange,提问作者John Barrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 05:27:04