求助:vc++中的(i++)和(++i)在delphi中分别如何表示啊?

解决方案 »

  1.   

    i := i + 1
    或者Inc(i)
      

  2.   

    Delphi中好象没有这样的运算符,只有一个Inc(i)这样的
      

  3.   

    delphi2005开始好像有操作符重载了吧? 那应该能自己写个吧
      

  4.   

    单纯的++i或i++的话就是inc(i),否则你需要考虑下inc(i)在翻译过来的代码中的先后顺序
      

  5.   

    ++i,i++,如果你是单独的句配,不用循环等地方,与i:=i+1是没有任何区别的inc(i)还是原子操作
      

  6.   

    inc(i)是原子操作?谁告诉你的?
      

  7.   

    在C里面,有一个表达式返回值
    i++相当于
    function Increment(var Value: Integer): Integer;
    begin
      Result := Value;
      Value := Value + 1;
    end;++i相当于
    function Increment(var Value: Integer): Integer;
    begin
      Value := Value + 1;
      Result := Value;
    end;
      

  8.   

    如果要完全模拟,那就是:
    //Value++
    function Get_And_Increment(var Value: Integer): Integer;inline;
    begin
      Result := Value;
      Value := Value + 1;
    end;//++Value
    function Increment_And_Get(var Value: Integer): Integer;inline;
    begin
      Value := Value + 1;
      Result := Value;
    end;
      

  9.   

    原子操作需要使用API(当然也可以自己写函数)
    InterlockedIncrement (Uses Windows;)原型:
    function InterlockedIncrement(var I: Integer): Integer;inline;
    asm
            MOV     EDX,1
            XCHG    EAX,EDX
      LOCK  XADD    [EDX],EAX
            INC     EAX
    end;
      

  10.   

    对于原子操作的:
    ++i,相当于InterlockedIncrement(i);
    i++,相当于InterlockedExchangeAdd(i,1);
      

  11.   

    ++i和i++放在表达式里面比较模糊,大概delphi不建议这样使用。
      

  12.   

    ++i:
    inc(i);
    U[i];i++:
    U[i];
    inc(i);先用后‘+’和先‘+’后用,不必计较,只是个初值选择的问题
      

  13.   


    既然value : integer在子函数的声明中出现,那么应该是子程序范围内可见的变量,似乎应该每次调用时Value的值都是传过来的,而value := value + 1;似乎只对value这个子程序范围内的变量可操作,至于传过来的变量不应该一同被改变啊? 可是如此进行测试发现,传入的一个变量,在处理完后真的被改变了,难道是按照参数地址传递的么?