6_5_64_unsigned_size_division.c (500B)
1 typedef unsigned long kit_size_t; 2 3 struct Node { 4 char bytes[24]; 5 }; 6 7 #define MAX_SIZE_T ((kit_size_t) ~(kit_size_t)0) 8 #define LIMIT_N(n, t) \ 9 ((kit_size_t)(n) <= MAX_SIZE_T / sizeof(t) \ 10 ? (n) \ 11 : (unsigned int)(MAX_SIZE_T / sizeof(t))) 12 13 int test_main(void) { 14 unsigned int n = 1u << 30; 15 unsigned int limit = LIMIT_N(n, struct Node); 16 if (limit != n) return 10; 17 return (MAX_SIZE_T / sizeof(struct Node)) > n ? 42 : 20; 18 }