在** if语句中使用**和**运算符**

时间:2011-03-30 15:38:02

标签: delphi if-statement and-operator

我被一位朋友带到了这个网站。

我试图在Delphi中使用and,但我似乎做错了。你需要投入使用吗?

我有以下代码:

procedure TForm1.Button1Click(Sender: TObject);
var
a,b:string;
begin
a:=edit1.Text;
b:=edit2.Text;

if a=abc and b=def then
showmessage(a+b);

end;

我在第二个=符号

时收到错误

4 个答案:

答案 0 :(得分:31)

您必须添加一些括号来更改运算符优先级:

  if (a=abc) and (b=def) then

运算符and=之前,因此没有括号的结构被理解为 a=(abc and b=def)产生语法错误。

答案 1 :(得分:10)

and的优先级高于=。因此if a=abc and b=def then变为if a=(abc and b)=def then,这是无效的。所以把它写成if (a=abc) and (b=def) then

答案 2 :(得分:7)

Delphi的运算符优先级规则正在绊倒你。有四个级别。

  1. @,NOT
  2. *,/,div,mod,和shl,shr,as
  3. +, - 或者,xor
  4. =,<>,<,>,< =,> =,in,
  5. 在您的示例中,AND比较将首先发生,除非您使用括号强制首先完成相等比较。

    Expressions (Delphi) - Operator Precedence

答案 3 :(得分:2)

当然字符串中缺少撇号 - 声明应该是

  

if(a ='abc')和(b ='def')然后......