diff --git a/vlib/builtin/builtin_windows.c.v b/vlib/builtin/builtin_windows.c.v
index 8b1d7ef219bc4..1de0c0983621c 100644
--- a/vlib/builtin/builtin_windows.c.v
+++ b/vlib/builtin/builtin_windows.c.v
@@ -63,7 +63,7 @@ const (
 	symopt_load_lines            = 0x00000010
 	symopt_include_32bit_modules = 0x00002000
 	symopt_allow_zero_address    = 0x01000000
-	symopt_debug                 = 0x80000000
+	symopt_debug                 = u32(0x80000000)
 )
 
 // g_original_codepage - used to restore the original windows console code page when exiting
diff --git a/vlib/crypto/md5/md5.v b/vlib/crypto/md5/md5.v
index 1b7cd28dc38be..6a6dc49f90b9f 100644
--- a/vlib/crypto/md5/md5.v
+++ b/vlib/crypto/md5/md5.v
@@ -19,8 +19,8 @@ pub const (
 
 const (
 	init0 = 0x67452301
-	init1 = 0xEFCDAB89
-	init2 = 0x98BADCFE
+	init1 = u32(0xEFCDAB89)
+	init2 = u32(0x98BADCFE)
 	init3 = 0x10325476
 )
 
diff --git a/vlib/crypto/sha1/sha1.v b/vlib/crypto/sha1/sha1.v
index 0b13ad4f305f7..4f7622c38d824 100644
--- a/vlib/crypto/sha1/sha1.v
+++ b/vlib/crypto/sha1/sha1.v
@@ -20,10 +20,10 @@ pub const (
 const (
 	chunk = 64
 	init0 = 0x67452301
-	init1 = 0xEFCDAB89
-	init2 = 0x98BADCFE
+	init1 = u32(0xEFCDAB89)
+	init2 = u32(0x98BADCFE)
 	init3 = 0x10325476
-	init4 = 0xC3D2E1F0
+	init4 = u32(0xC3D2E1F0)
 )
 
 // digest represents the partial evaluation of a checksum.
diff --git a/vlib/crypto/sha1/sha1block_generic.v b/vlib/crypto/sha1/sha1block_generic.v
index d03bd8f400610..3144fb9ab3fbf 100644
--- a/vlib/crypto/sha1/sha1block_generic.v
+++ b/vlib/crypto/sha1/sha1block_generic.v
@@ -11,8 +11,8 @@ import math.bits
 const (
 	_k0 = 0x5A827999
 	_k1 = 0x6ED9EBA1
-	_k2 = 0x8F1BBCDC
-	_k3 = 0xCA62C1D6
+	_k2 = u32(0x8F1BBCDC)
+	_k3 = u32(0xCA62C1D6)
 )
 
 fn block_generic(mut dig Digest, p_ []u8) {
diff --git a/vlib/crypto/sha256/sha256.v b/vlib/crypto/sha256/sha256.v
index 65340f9b6c364..0fc6280971605 100644
--- a/vlib/crypto/sha256/sha256.v
+++ b/vlib/crypto/sha256/sha256.v
@@ -21,21 +21,21 @@ pub const (
 const (
 	chunk     = 64
 	init0     = 0x6A09E667
-	init1     = 0xBB67AE85
+	init1     = u32(0xBB67AE85)
 	init2     = 0x3C6EF372
-	init3     = 0xA54FF53A
+	init3     = u32(0xA54FF53A)
 	init4     = 0x510E527F
-	init5     = 0x9B05688C
+	init5     = u32(0x9B05688C)
 	init6     = 0x1F83D9AB
 	init7     = 0x5BE0CD19
-	init0_224 = 0xC1059ED8
+	init0_224 = u32(0xC1059ED8)
 	init1_224 = 0x367CD507
 	init2_224 = 0x3070DD17
-	init3_224 = 0xF70E5939
-	init4_224 = 0xFFC00B31
+	init3_224 = u32(0xF70E5939)
+	init4_224 = u32(0xFFC00B31)
 	init5_224 = 0x68581511
 	init6_224 = 0x64F98FA7
-	init7_224 = 0xBEFA4FA4
+	init7_224 = u32(0xBEFA4FA4)
 )
 
 // digest represents the partial evaluation of a checksum.
diff --git a/vlib/os/const_windows.c.v b/vlib/os/const_windows.c.v
index dbbac405ffed0..47eab9e478f52 100644
--- a/vlib/os/const_windows.c.v
+++ b/vlib/os/const_windows.c.v
@@ -9,7 +9,7 @@ const (
 )
 
 const (
-	handle_generic_read  = 0x80000000
+	handle_generic_read  = u32(0x80000000)
 	handle_open_existing = 0x00000003
 )
 
@@ -111,38 +111,38 @@ const (
 )
 
 const (
-	status_access_violation           = 0xC0000005
-	status_in_page_error              = 0xC0000006
-	status_invalid_handle             = 0xC0000008
-	status_invalid_parameter          = 0xC000000D
-	status_no_memory                  = 0xC0000017
-	status_illegal_instruction        = 0xC000001D
-	status_noncontinuable_exception   = 0xC0000025
-	status_invalid_disposition        = 0xC0000026
-	status_array_bounds_exceeded      = 0xC000008C
-	status_float_denormal_operand     = 0xC000008D
-	status_float_divide_by_zero       = 0xC000008E
-	status_float_inexact_result       = 0xC000008F
-	status_float_invalid_operation    = 0xC0000090
-	status_float_overflow             = 0xC0000091
-	status_float_stack_check          = 0xC0000092
-	status_float_underflow            = 0xC0000093
-	status_integer_divide_by_zero     = 0xC0000094
-	status_integer_overflow           = 0xC0000095
-	status_privileged_instruction     = 0xC0000096
-	status_stack_overflow             = 0xC00000FD
-	status_dll_not_found              = 0xC0000135
-	status_ordinal_not_found          = 0xC0000138
-	status_entrypoint_not_found       = 0xC0000139
-	status_control_c_exit             = 0xC000013A
-	status_dll_init_failed            = 0xC0000142
-	status_float_multiple_faults      = 0xC00002B4
-	status_float_multiple_traps       = 0xC00002B5
-	status_reg_nat_consumption        = 0xC00002C9
-	status_heap_corruption            = 0xC0000374
-	status_stack_buffer_overrun       = 0xC0000409
-	status_invalid_cruntime_parameter = 0xC0000417
-	status_assertion_failure          = 0xC0000420
+	status_access_violation           = u32(0xC0000005)
+	status_in_page_error              = u32(0xC0000006)
+	status_invalid_handle             = u32(0xC0000008)
+	status_invalid_parameter          = u32(0xC000000D)
+	status_no_memory                  = u32(0xC0000017)
+	status_illegal_instruction        = u32(0xC000001D)
+	status_noncontinuable_exception   = u32(0xC0000025)
+	status_invalid_disposition        = u32(0xC0000026)
+	status_array_bounds_exceeded      = u32(0xC000008C)
+	status_float_denormal_operand     = u32(0xC000008D)
+	status_float_divide_by_zero       = u32(0xC000008E)
+	status_float_inexact_result       = u32(0xC000008F)
+	status_float_invalid_operation    = u32(0xC0000090)
+	status_float_overflow             = u32(0xC0000091)
+	status_float_stack_check          = u32(0xC0000092)
+	status_float_underflow            = u32(0xC0000093)
+	status_integer_divide_by_zero     = u32(0xC0000094)
+	status_integer_overflow           = u32(0xC0000095)
+	status_privileged_instruction     = u32(0xC0000096)
+	status_stack_overflow             = u32(0xC00000FD)
+	status_dll_not_found              = u32(0xC0000135)
+	status_ordinal_not_found          = u32(0xC0000138)
+	status_entrypoint_not_found       = u32(0xC0000139)
+	status_control_c_exit             = u32(0xC000013A)
+	status_dll_init_failed            = u32(0xC0000142)
+	status_float_multiple_faults      = u32(0xC00002B4)
+	status_float_multiple_traps       = u32(0xC00002B5)
+	status_reg_nat_consumption        = u32(0xC00002C9)
+	status_heap_corruption            = u32(0xC0000374)
+	status_stack_buffer_overrun       = u32(0xC0000409)
+	status_invalid_cruntime_parameter = u32(0xC0000417)
+	status_assertion_failure          = u32(0xC0000420)
 )
 
 // Windows Registry Constants
diff --git a/vlib/rand/constants/constants.v b/vlib/rand/constants/constants.v
index c70d3e48954f2..371d54d7390d9 100644
--- a/vlib/rand/constants/constants.v
+++ b/vlib/rand/constants/constants.v
@@ -3,7 +3,7 @@ module constants
 // Commonly used constants across RNGs - some taken from "Numerical Recipes".
 pub const (
 	lower_mask     = u64(0x00000000FFFFFFFF)
-	max_u32        = 0xFFFFFFFF
+	max_u32        = u32(0xFFFFFFFF)
 	max_u64        = u64(0xFFFFFFFFFFFFFFFF)
 	max_u32_as_f32 = f32(max_u32) + 1
 	max_u64_as_f64 = f64(max_u64) + 1
diff --git a/vlib/regex/regex.v b/vlib/regex/regex.v
index 0b465aa8732aa..6f600cb371794 100644
--- a/vlib/regex/regex.v
+++ b/vlib/regex/regex.v
@@ -53,18 +53,18 @@ const (
 	// char class 11 0100 AA xxxxxxxx
 	// AA = 00  regular class
 	// AA = 01  Negated class ^ char
-	ist_char_class     = 0xD1000000 // MASK
-	ist_char_class_pos = 0xD0000000 // char class normal [abc]
-	ist_char_class_neg = 0xD1000000 // char class negate [^abc]
+	ist_char_class     = u32(0xD1000000) // MASK
+	ist_char_class_pos = u32(0xD0000000) // char class normal [abc]
+	ist_char_class_neg = u32(0xD1000000) // char class negate [^abc]
 	// dot char        10 0110 xx xxxxxxxx
-	ist_dot_char       = 0x98000000 // match any char except \n
+	ist_dot_char       = u32(0x98000000) // match any char except \n
 	// backslash chars 10 0100 xx xxxxxxxx
-	ist_bsls_char      = 0x90000000 // backslash char
+	ist_bsls_char      = u32(0x90000000) // backslash char
 	// OR |            10 010Y xx xxxxxxxx
-	ist_or_branch      = 0x91000000 // OR case
+	ist_or_branch      = u32(0x91000000) // OR case
 	// groups          10 010Y xx xxxxxxxx
-	ist_group_start    = 0x92000000 // group start (
-	ist_group_end      = 0x94000000 // group end   )
+	ist_group_start    = u32(0x92000000) // group start (
+	ist_group_end      = u32(0x94000000) // group end   )
 	// control instructions
 	ist_prog_end       = u32(0x88000000) // 10 0010 xx xxxxxxxx
 		//*************************************
diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v
index e63787e7210d3..1130f1e9ba97c 100644
--- a/vlib/v/checker/checker.v
+++ b/vlib/v/checker/checker.v
@@ -1395,6 +1395,20 @@ pub fn (mut c Checker) const_decl(mut node ast.ConstDecl) {
 				}
 			}
 		}
+		// Check for int overflow
+		if field.typ == ast.int_type {
+			if mut field.expr is ast.IntegerLiteral {
+				mut is_large := field.expr.val.len > 13
+				if !is_large && field.expr.val.len > 8 {
+					val := field.expr.val.i64()
+					is_large = val > checker.int_max || val < checker.int_min
+				}
+				if is_large {
+					c.error('overflow in implicit type `int`, use explicit type casting instead',
+						field.expr.pos)
+				}
+			}
+		}
 		c.const_deps = []
 		c.const_var = prev_const_var
 	}
diff --git a/vlib/v/checker/tests/const_int_overflow_err.out b/vlib/v/checker/tests/const_int_overflow_err.out
new file mode 100644
index 0000000000000..3b32fe5b2cd89
--- /dev/null
+++ b/vlib/v/checker/tests/const_int_overflow_err.out
@@ -0,0 +1,5 @@
+vlib/v/checker/tests/const_int_overflow_err.vv:1:11: error: overflow in implicit type `int`, use explicit type casting instead
+    1 | const c = 2847238432
+      |           ~~~~~~~~~~
+    2 | 
+    3 | fn main() {
diff --git a/vlib/v/checker/tests/const_int_overflow_err.vv b/vlib/v/checker/tests/const_int_overflow_err.vv
new file mode 100644
index 0000000000000..ae44dc55320aa
--- /dev/null
+++ b/vlib/v/checker/tests/const_int_overflow_err.vv
@@ -0,0 +1,6 @@
+const c = 2847238432
+
+fn main() {
+    i := c
+    assert i == c
+}
diff --git a/vlib/v/gen/native/macho.v b/vlib/v/gen/native/macho.v
index 862be4d200b32..eac5ce8968ace 100644
--- a/vlib/v/gen/native/macho.v
+++ b/vlib/v/gen/native/macho.v
@@ -5,20 +5,20 @@ module native
 
 const (
 	s_attr_some_instructions = 0x0400
-	s_attr_pure_instructions = 0x80000000
+	s_attr_pure_instructions = u32(0x80000000)
 	s_attr_ext_reloc         = 0x0200
 	s_attr_loc_reloc         = 0x0100
 	macho_symcmd_size        = 0x18
 	macho_d_size             = 0x50
 	mh_object                = 1
 	mh_execute               = 2
-	lc_dyld_chained_fixups   = 0x80000034
-	lc_dyld_exports_trie     = 0x80000033
-	lc_dyld_info_only        = 0x80000022
+	lc_dyld_chained_fixups   = u32(0x80000034)
+	lc_dyld_exports_trie     = u32(0x80000033)
+	lc_dyld_info_only        = u32(0x80000022)
 	lc_dysymtab              = 0xb
 	lc_load_dylib            = 0xc
 	lc_load_dylinker         = 0xe
-	lc_main                  = 0x80000028
+	lc_main                  = u32(0x80000028)
 	lc_segment_64            = 0x19
 	lc_symtab                = 0x2
 	base_addr                = i64(0x1_0000_0000)
