官术网_书友最值得收藏!

Overflow checking

The Overflow checking option regulates whether the compiler checks if certain arithmetic operations (+, -, *, Abs, Sqr, Inc, Dec, Succ, and Pred) produce a number that is too large or too small to fit into the data type. You can use compiler options, {$OVERFLOWCHECKS ON} and {$OVERFLOWCHECKS OFF} (or short forms {$Q+} and {$Q-}), to turn this option on and off in a specific part of a program.

For example, the following program will silently increment $FFFFFFFF to 0 in the first Inc statement but will raise EIntOverflow exception in the second Inc statement:


procedure TfrmCompilerOptions.btnOverflowErrorClick(Sender: TObject);
var
i: cardinal;
begin
{$Q-}
i := $FFFFFFFF;
// Without overflow checks, Inc will work and i will be 0
Inc(i);

{$Q+}
i := $FFFFFFFF;
// With overflow checks, Inc will raise an exception
Inc(i);
end;

Enabling overflow checking doesn't make a big change in the program speed, so you can freely use it whenever it is needed. I would suggest turning it on at least in debug configuration as that will help with finding errors in the code.

主站蜘蛛池模板: 竹北市| 铜鼓县| 宁安市| 深泽县| 荃湾区| 锡林浩特市| 师宗县| 桃园县| 中山市| 临沭县| 桦甸市| 海门市| 娱乐| 江达县| 舞阳县| 武强县| 思南县| 辽中县| 平果县| 化德县| 新化县| 出国| 芜湖县| 武威市| 扎兰屯市| 临澧县| 阿合奇县| 新沂市| 瓮安县| 赞皇县| 天祝| 苏州市| 当涂县| 榆社县| 沭阳县| 乐平市| 大田县| 温州市| 洛阳市| 永济市| 边坝县|