File: bitops.c

package info (click to toggle)
splint 3.1.2.dfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, squeeze, wheezy
  • size: 12,908 kB
  • ctags: 15,816
  • sloc: ansic: 150,306; yacc: 3,463; sh: 3,426; makefile: 2,218; lex: 412
file content (30 lines) | stat: -rw-r--r-- 474 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int f (int i1, int i2, unsigned u1, unsigned u2)
{
  int x = i1 & i2; /* not unsigned */
  unsigned u = u1 & i2;
  short s = i1 & i2;  /* not unsigned */
  short s2 = i1 + i2;

  u = u1 | u2;
  u = i1 << 3; /* left operand not unsigned */
  u = u1 >> 4; /* okay */
  u = u1 >> i1;

  u >>= 3;
  u = i1 ^ u1; /* ! unsigned */
  u = u1 ^ i1; /* ! not unsigned */

  return x;
}

/*

>>, >>=
<<, <<=
    warn if not unsigned

&, &=
|, |=
^ (XOR), ^=
   warn if not unsigned
*/