既然不会,为什么Delphi还要安排一个“Overflow Checking”?

解决方案 »

  1.   

    同意楼上的。
    据说在发布程序的时候,把那些checking去掉,可以加快程序运行的速度。
      

  2.   

    如果把Project Options里的“Range Checking”和“Overflow Checking”的勾选去除,那么:
      B := 255;
      Inc(B);
    执行后,B=0,而不是256。
    “When you increment the last value or decrement the first value of an integer type, the result wraps around the beginning or end of the range. ”也就是说,增加最大值,返回最小值;减小最小值,返回最大值。
    所以,不可能造成对其他内存区域数据的破坏。但是当B已经最大时, Inc(B)不会达到你想要的效果。
      —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
        
      

  3.   

    To: lxpbuaa(桂枝香在故国晚秋)B := 255;
    B := B * 2;
    也不会造成对其他内存区域数据的破坏吗?
      

  4.   

    不会造成对其他内存区域数据的破坏的,因为Delphi编译器可能会遵照数据类型的数值范围的。Project Options里的“Range Checking”和“Overflow Checking”勾选,会导致溢出错误,是给你一个提示而已。—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
        
      

  5.   

    不会,你可以类推一下。
    255*2=
     inc(a,255)=254;