1 unsigned
f1(x)2 f1 (x)
3 {
4   return ((unsigned) (x != 0) - 3) / 2;
5 }
6 
7 unsigned long long
f2(x)8 f2 (x)
9 {
10   return ((unsigned long long) (x != 0) - 3) / 2;
11 }
12 
main()13 main ()
14 {
15   if (f1 (1) != (~(unsigned) 0) >> 1)
16     abort ();
17   if (f1 (0) != ((~(unsigned) 0) >> 1) - 1)
18     abort ();
19   if (f2 (1) != (~(unsigned long long) 0) >> 1)
20     abort ();
21   if (f2 (0) != ((~(unsigned long long) 0) >> 1) - 1)
22     abort ();
23   exit (0);
24 }
25