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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
#include <helpers.h>
int main() {
// arithmetic operators
ASSERT_EQ(42, 42);
ASSERT_EQ(21, 5 + 20 - 4);
ASSERT_EQ(26, 2 * 3 + 4 * 5);
ASSERT_EQ(197, (((3 + 5) / 2) + (5 * (9 - 6)) * (5 + 6 * 7)) % 256);
ASSERT_EQ(30, (-10 + 20 * -3) + 100);
// comparison operators
ASSERT_EQ(1, 0 == 0);
ASSERT_EQ(0, 123 != 123);
ASSERT_EQ(1, 123 != 456);
ASSERT_EQ(0, 123 == 124);
ASSERT_EQ(1, 123 < 567);
ASSERT_EQ(1, 123 <= 567);
ASSERT_EQ(1, 123 <= 123);
ASSERT_EQ(0, 123 < 123);
// bitwise operators
ASSERT_EQ(123, 0 | 123);
ASSERT_EQ(460, 12 | 456);
ASSERT_EQ(8, 1 << 3);
ASSERT_EQ(336, 21 << 4);
ASSERT_EQ(13, 111 >> 3);
ASSERT_EQ(0, 15 >> 14);
int a = 5;
int b = 3;
ASSERT_EQ(1, a & b);
ASSERT_EQ(7, a | b);
ASSERT_EQ(6, a ^ b);
ASSERT_EQ(4, 2 + 3 & 4);
int c = 1 + 2 & 3;
int d = 4 & 5 ^ 6;
int e = 1 ^ 2 | 3;
int f = 0 | 1 & 2;
ASSERT_EQ(3, c);
ASSERT_EQ(2, d);
ASSERT_EQ(3, e);
ASSERT_EQ(0, f);
ASSERT_EQ(-1, ~0);
ASSERT_EQ(-2, ~1);
ASSERT_EQ(-6, ~5);
ASSERT_EQ(0, ~(-1));
ASSERT_EQ(5, ~(-6));
int x = 10;
ASSERT_EQ(-11, ~x);
ASSERT_EQ(-1, ~(x & 0));
ASSERT_EQ(-16, ~(x | 5));
// assignment operators
int i = 0;
for (; i < 5; i += 1) {
}
ASSERT_EQ(5, i);
for (i = 5; i >= 0; i -= 1)
;
ASSERT_EQ(-1, i);
x = 123;
x *= 456;
ASSERT_EQ(56088, x);
int y = 120;
y /= 5;
ASSERT_EQ(24, y);
int z = 17;
z %= 7;
ASSERT_EQ(3, z);
a = 0x05;
a |= 0x0A;
ASSERT_EQ(0x0F, a);
b = 0x0F;
b &= 0x0A;
ASSERT_EQ(0x0A, b);
c = 7;
c |= 8;
ASSERT_EQ(15, c);
d = 15;
d &= 6;
ASSERT_EQ(6, d);
e = 0x0F;
e ^= 0x05;
ASSERT_EQ(0x0A, e);
f = 3;
f <<= 2;
ASSERT_EQ(12, f);
int g = 16;
g >>= 2;
ASSERT_EQ(4, g);
int h = -16;
h >>= 2;
ASSERT_EQ(-4, h);
int j = 1;
j <<= 4;
ASSERT_EQ(16, j);
int k = 64;
k >>= 3;
ASSERT_EQ(8, k);
// ternary operator
ASSERT_EQ(2, 1 ? 2 : 3);
ASSERT_EQ(5, 0 ? 4 : 5);
}
|