unchecked-inc

added
1.0

ns
clojure.core

type
function

(unchecked-inc x)

Returns a number one greater than x, a long.
Note - uses a primitive operator subject to overflow.

                users=> (unchecked-inc Integer/MAX_VALUE)
-2147483648

users=> (unchecked-inc 0)
1
            
                ;; Illustrates the difference between (inc), (inc') and (unchecked-inc)

;; The "N" suffix denotes a BigInt instance
;; https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/BigInt.java

Long/MAX_VALUE
;;=> 9223372036854775807

(inc Long/MAX_VALUE)
;;=> ArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1501)

(inc' Long/MAX_VALUE)
;;=> 9223372036854775808N

;; Notice how the resulting number becomes NEGATIVE:
(unchecked-inc Long/MAX_VALUE)
;;=> -9223372036854775808