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

ger*_*ard 6 delphi if-statement and-operator

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

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

我有以下代码:

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;
Run Code Online (Sandbox Code Playgroud)

我在第二个=符号时收到错误

PA.*_*PA. 31

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

  if (a=abc) and (b=def) then
Run Code Online (Sandbox Code Playgroud)

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

  • "我需要写更多的字符才能提交"< - 哈哈:D (4认同)
  • 还必须声明abc和def,如果它的字符串值(不是变量)必须用引号'abc'和'def'包装 (3认同)
  • 是不是a =(abc和b)= def,而不是a =(abc和b = def)? (2认同)

The*_*Fox 10

and优先级高于=.所以if a=abc and b=def then变得if a=(abc and b)=def then无效.所以写得像if (a=abc) and (b=def) then.


Bri*_*ian 7

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

  1. @,不
  2. *,/,div,mod,和shl,shr,as
  3. +, - 或者,xor
  4. =,<>,<,>,<=,> =,in,是

在您的示例中,AND比较将首先发生,除非您使用括号强制首先完成相等比较.

表达式(Delphi) - 运算符优先级