tcnvint5.pp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. var
  2. error: boolean;
  3. procedure test;
  4. var
  5. b: byte;
  6. l: longint;
  7. begin
  8. b := 254;
  9. inc(b,2);
  10. l := b;
  11. if (l <> 0) then
  12. begin
  13. writeln('overflow error with byte');
  14. error := true;
  15. end;
  16. b :=1;
  17. dec(b,2);
  18. l := b;
  19. if (l <> 255) then
  20. begin
  21. writeln('underflow error with byte');
  22. error := true;
  23. end;
  24. end;
  25. procedure test2;
  26. var
  27. b: shortint;
  28. l: longint;
  29. begin
  30. b := -127;
  31. dec(b,2);
  32. l := b;
  33. if (l <> 127) then
  34. begin
  35. writeln('neg error with shortint');
  36. error := true;
  37. end;
  38. b := 126;
  39. inc(b,2);
  40. l := b;
  41. if (l <> -128) then
  42. begin
  43. writeln('pos error with shortint');
  44. error := true;
  45. end;
  46. end;
  47. procedure test3;
  48. var
  49. b: longint;
  50. l: int64;
  51. begin
  52. b := low(longint)+1;
  53. dec(b,2);
  54. l := b;
  55. if (l <> high(longint)) then
  56. begin
  57. writeln('neg error with shortint');
  58. error := true;
  59. end;
  60. b := high(longint)-1;
  61. inc(b,2);
  62. l := b;
  63. if (l <> low(longint)) then
  64. begin
  65. writeln('pos error with shortint');
  66. error := true;
  67. end;
  68. end;
  69. begin
  70. error := false;
  71. test;
  72. test2;
  73. test3;
  74. halt(ord(error));
  75. end.