source: EcnlProtoTool/trunk/tcc-0.9.27/tests/tests2/93_integer_promotion.c@ 331

Last change on this file since 331 was 331, checked in by coas-nagasima, 6 years ago

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc
File size: 1.3 KB
Line 
1/* integer promotion */
2
3int printf(const char*, ...);
4#define promote(s) printf(" %ssigned : %s\n", (s) - 100 < 0 ? " " : "un", #s);
5
6int main (void)
7{
8 struct {
9 unsigned ub:3;
10 unsigned u:32;
11 unsigned long long ullb:35;
12 unsigned long long ull:64;
13 unsigned char c;
14 } s = { 1, 1, 1 };
15
16 promote(s.ub);
17 promote(s.u);
18 promote(s.ullb);
19 promote(s.ull);
20 promote(s.c);
21 printf("\n");
22
23 promote((1 ? s.ub : 1));
24 promote((1 ? s.u : 1));
25 promote((1 ? s.ullb : 1));
26 promote((1 ? s.ull : 1));
27 promote((1 ? s.c : 1));
28 printf("\n");
29
30 promote(s.ub << 1);
31 promote(s.u << 1);
32 promote(s.ullb << 1);
33 promote(s.ull << 1);
34 promote(s.c << 1);
35 printf("\n");
36
37 promote(+s.ub);
38 promote(+s.u);
39 promote(+s.ullb);
40 promote(+s.ull);
41 promote(+s.c);
42 printf("\n");
43
44 promote(-s.ub);
45 promote(-s.u);
46 promote(-s.ullb);
47 promote(-s.ull);
48 promote(-s.c);
49 printf("\n");
50
51 promote(~s.ub);
52 promote(~s.u);
53 promote(~s.ullb);
54 promote(~s.ull);
55 promote(~s.c);
56 printf("\n");
57
58 promote(!s.ub);
59 promote(!s.u);
60 promote(!s.ullb);
61 promote(!s.ull);
62 promote(!s.c);
63 printf("\n");
64
65 promote(+(unsigned)s.ub);
66 promote(-(unsigned)s.ub);
67 promote(~(unsigned)s.ub);
68 promote(!(unsigned)s.ub);
69
70 return 0;
71}
Note: See TracBrowser for help on using the repository browser.