]> pd.if.org Git - lice/blob - tests/sizeof.c
autocommit for files dated 2014-11-17 20:15:26
[lice] / tests / sizeof.c
1 // sizeof operator
2
3 int main(void) {
4     expecti(sizeof(char),   1);
5     expecti(sizeof(short),  2);
6     expecti(sizeof(int),    4);
7     expecti(sizeof(long),   8);
8     expecti(sizeof(char*),  8);
9     expecti(sizeof(short*), 8);
10     expecti(sizeof(int*),   8);
11     expecti(sizeof(long*),  8);
12
13     expecti(sizeof(unsigned char),  1);
14     expecti(sizeof(unsigned short), 2);
15     expecti(sizeof(unsigned int),   4);
16     expecti(sizeof(unsigned long),  8);
17
18     expecti(sizeof 1,    4);
19     expecti(sizeof 1L,   8);
20     expecti(sizeof 1.0f, 4);
21     expecti(sizeof 1.0,  8);
22     expecti(sizeof 'a',  4);
23     expecti(sizeof('b'), 4);
24
25     expecti(sizeof(char[1]),      1);
26     expecti(sizeof(char[2]),      2);
27     expecti(sizeof(char[3]),      3);
28     expecti(sizeof(char[1][10]),  10);
29     expecti(sizeof(char[10][1]),  10);
30     expecti(sizeof(char[10][10]), 100);
31     expecti(sizeof(int[4][2]),    32);
32     expecti(sizeof(int[2][4]),    32);
33
34     char  a[] = { 1, 2, 3 };
35     char  b[] = "abc";
36     char *c[5];
37     char *(*d)[3];
38
39     expecti(sizeof(a),    3);
40     expecti(sizeof(b),    4);
41     expecti(sizeof(c),    40);
42     expecti(sizeof(d),    8);
43     expecti(sizeof(*d),   24);
44     expecti(sizeof(**d),  8);
45     expecti(sizeof(***d), 1);
46
47     char _not_int_;
48     expecti(sizeof((int)_not_int_), 4); // cast makes it sizeof(int)
49
50     // the more complicated syntax cases
51     expecti(sizeof(b[0]),     1);
52     expecti(sizeof((b[0])),   1);
53     expecti(sizeof((b)[0]),   1);
54     expecti(sizeof(((b)[0])), 1);
55
56     return 0;
57 }