操作符的优先问题
procedure TForm1.Button1Click(Sender: TObject);
var
  ff:string;
begin
  if( box2.Checked =false) and( box1.Checked =false )then
   ff:='0';
  if (box2.Checked =false )and (box1.Checked =true) then
   ff:='1';
  if( box2.Checked =true) and( box1.Checked =false )then
   ff:='2';
  if( box2.Checked =true) and (box1.Checked =true )then
   ff:='3';
  edit1.Text :=ff;
end;

解决方案 »

  1.   

    pascal中逻辑运算最好都加上括号,象
    if (box2.Checked =false) and (box1.Checked =false) then
    因为在pascal中and比=优先级高
      

  2.   

    -------------嘻嘻,你不知道?俺更菜,嘻嘻---------
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ff:string;
    begin
      if (box2.Checked =false) and( box1.Checked =false) then
       ff:='0';
      if (box2.Checked =false) and (box1.Checked =true) then
       ff:='1';
      if (box2.Checked =true )and (box1.Checked =false )then
       ff:='2';
      if (box2.Checked =true) and (box1.Checked =true) then
       ff:='3';
      edit1.Text :=ff;
    end;//以下代码为何得到“2”?procedure TForm1.Button2Click(Sender: TObject);
    var
      ff:string;
    begin
      if (box2.Checked =false) and (box1.Checked =false )then
       ff:='0';
      if (box2.Checked =false) and (box1.Checked) then
       ff:='1';
      if (box2.Checked )and (box1.Checked =false) then
       ff:='2';
      if (box2.Checked) and (box1.Checked )then
       ff:='3';
      edit1.Text :=ff;
    end;end.
      

  3.   

    两个问题按以下这样写法就对。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ff:string;
    begin
      if (box2.Checked =false) and (box1.Checked =false) then
       ff:='0';
      if (box2.Checked =false) and (box1.Checked =true) then
       ff:='1';
      if (box2.Checked =true) and (box1.Checked =false) then
       ff:='2';
      if (box2.Checked =true) and (box1.Checked =true) then
       ff:='3';
      edit1.Text :=ff;
    end;
      

  4.   

    该成如下语句:
      var
      ff:string;
    begin
      if (box2.Checked =false) and (box1.Checked =false) then
       ff:='0';
      if (box2.Checked =false) and (box1.Checked =true) then
       ff:='1';
      if (box2.Checked =true) and (box1.Checked =false) then
       ff:='2';
      if (box2.Checked =true) and (box1.Checked =true) then
       ff:='3';
      edit1.Text :=ff;
    end;我刚试过,OK!