aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/operators.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/operators.c')
-rw-r--r--tests/operators.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/operators.c b/tests/operators.c
index 9e9ba08..e089477 100644
--- a/tests/operators.c
+++ b/tests/operators.c
@@ -119,4 +119,27 @@ int main() {
// ternary operator
ASSERT_EQ(2, 1 ? 2 : 3);
ASSERT_EQ(5, 0 ? 4 : 5);
+
+ // sizeof operator
+ // sizeof '(' type-name ')'
+ ASSERT_EQ(4, sizeof(int));
+ ASSERT_EQ(1, sizeof(char));
+
+ // sizeof unary-expr (with parenthesized expressions)
+ ASSERT_EQ(4, sizeof(+123));
+ ASSERT_EQ(4, sizeof(-1));
+ ASSERT_EQ(4, sizeof(1 + 2));
+ ASSERT_EQ(4, sizeof(~0));
+ ASSERT_EQ(4, sizeof(!0));
+
+ // sizeof unary-expr (variable)
+ int sz_var = 42;
+ ASSERT_EQ(4, sizeof(sz_var));
+ ASSERT_EQ(4, sizeof sz_var);
+
+ // sizeof with more complex expressions
+ char sz_c = 'a';
+ ASSERT_EQ(1, sizeof sz_c);
+ ASSERT_EQ(1, sizeof(sz_c));
+ ASSERT_EQ(4, sizeof(sz_c + 1));
}