aboutsummaryrefslogtreecommitdiff
path: root/tinycc/tests/tests2/118_switch.c
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-07-12 13:22:29 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-07-12 13:22:29 -0300
commitfa2bdd711212ba6b7a94a20971e8bfa281e73296 (patch)
tree6713b3c0379507d49558287b71dd360ce188a2f0 /tinycc/tests/tests2/118_switch.c
lol
Diffstat (limited to 'tinycc/tests/tests2/118_switch.c')
-rw-r--r--tinycc/tests/tests2/118_switch.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/tinycc/tests/tests2/118_switch.c b/tinycc/tests/tests2/118_switch.c
new file mode 100644
index 0000000..789dd06
--- /dev/null
+++ b/tinycc/tests/tests2/118_switch.c
@@ -0,0 +1,75 @@
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int ibdg(long long n)
+{
+ switch (n) {
+ case 1LL ... 9LL: return 1;
+ case 10LL ... 99LL: return 2;
+ case 100LL ... 999LL: return 3;
+ case 1000LL ... 9999LL: return 4;
+ case 10000LL ... 99999LL: return 5;
+ case 100000LL ... 999999LL: return 6;
+ case 1000000LL ... 9999999LL: return 7;
+ case 10000000LL ... 99999999LL: return 8;
+ case 100000000LL ... 999999999LL: return 9;
+ case 1000000000LL ... 9999999999LL: return 10;
+ case 10000000000LL ... 99999999999LL: return 11;
+ case 100000000000LL ... 999999999999LL: return 12;
+ case 1000000000000LL ... 9999999999999LL: return 13;
+ case 10000000000000LL ... 99999999999999LL: return 14;
+ case 100000000000000LL ... 999999999999999LL: return 15;
+ case 1000000000000000LL ... 9999999999999999LL: return 16;
+ case 10000000000000000LL ... 99999999999999999LL: return 17;
+ case 100000000000000000LL ... 999999999999999999LL: return 18;
+ case 1000000000000000000LL ... 9223372036854775807LL: return 19;
+ case -9223372036854775807LL-1LL ... -1LL: return 20;
+ }
+ return 0;
+}
+
+int ubdg(unsigned long long n)
+{
+ switch (n) {
+ case 1ULL ... 9ULL: return 1;
+ case 10ULL ... 99ULL: return 2;
+ case 100ULL ... 999ULL: return 3;
+ case 1000ULL ... 9999ULL: return 4;
+ case 10000ULL ... 99999ULL: return 5;
+ case 100000ULL ... 999999ULL: return 6;
+ case 1000000ULL ... 9999999ULL: return 7;
+ case 10000000ULL ... 99999999ULL: return 8;
+ case 100000000ULL ... 999999999ULL: return 9;
+ case 1000000000ULL ... 9999999999ULL: return 10;
+ case 10000000000ULL ... 99999999999ULL: return 11;
+ case 100000000000ULL ... 999999999999ULL: return 12;
+ case 1000000000000ULL ... 9999999999999ULL: return 13;
+ case 10000000000000ULL ... 99999999999999ULL: return 14;
+ case 100000000000000ULL ... 999999999999999ULL: return 15;
+ case 1000000000000000ULL ... 9999999999999999ULL: return 16;
+ case 10000000000000000ULL ... 99999999999999999ULL: return 17;
+ case 100000000000000000ULL ... 999999999999999999ULL: return 18;
+ case 1000000000000000000ULL ... 9999999999999999999ULL: return 19;
+ case 10000000000000000000ULL ... 18446744073709551615ULL: return 20;
+ }
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ unsigned int i;
+ unsigned long long v = 1;
+
+ v = 1;
+ for (i = 1; i <= 20; i++) {
+ printf("%lld : %d\n", (long long) v, ibdg((long long)v));
+ v *= 10;
+ }
+ v = 1;
+ for (i = 1; i <= 20; i++) {
+ printf("%llu : %d\n", v, ubdg(v));
+ v *= 10;
+ }
+ return 0;
+}