我写了一个程序:
program Project2;function abs(x:integer):integer;
begin
  if (x>=0) then
  begin
    writeln('x>0');
    abs:=x;
  end
  else
  begin
    writeln('x<0');
    abs:=-x;
    writeln('x<0');
  end;
end;begin
  writeln('hello,world');
  writeln(abs(-3));
  readln;
end.
运行的结果是:
hello,world
x<0
x<0
3
为什么不是
hello,world
x<0
3
在执行完abs:=-x;之后为什么不返回
还有请问过程如何返回,有没有像c语言的return

解决方案 »

  1.   

    程序没有执行完当然要接着执行writeln('x<0');
    如果要出来,用Exit(跳出所在的过程或函数)
      

  2.   

    有没有像c语言的return
    /////////Result
      

  3.   

    这样可以达到你的要求,你好象用Pascal?
    function abs(x:integer):integer;
    begin
      if (x>=0) then
      begin
        ShowMessage('x>=0');
        Result:=x;
      end else
      begin
        ShowMessage('x<0');
        Result:=-x;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('hello,world');
      ShowMessage(IntToStr(abs(-3)));
    end;
      

  4.   

    abs(-3)
    函数要执行语句;
        writeln('x<0');
        abs:=-x;
        writeln('x<0');肯定是输出;
    x<0
    x<0
    两次了;另外在delphi中过程不能有返回值;
    函数可以;用result返回;
      

  5.   

    这样不就可以了嘛
    //...
    writeln('x<0');
        abs:=-x;
       exit;
    //...
      

  6.   

    function abs(x:integer):integer;
    begin
      if (x>=0) then
      begin
        writeln('x>0');
        Result:=x;
      end
      else
      begin
        writeln('x<0');
        Result:=-x;
        writeln('x<0');
      end;
    end;
      

  7.   

    Result:=-x 下多了一行 writeln('x<0');
      

  8.   

    明显是多了一行writeln('x<0');
      

  9.   

    你写了两个x<0呀,当然会出现两个x<0了