4 #define __STDC_LIMIT_MACROS 1
9 main(int argc, char** argv)
27 C = (char) (argc >= 2)? atoi(argv[1]) : 0x64; /* 100 = 'd' */
28 S = (short) (argc >= 3)? atoi(argv[2]) : -769; /* 0xfcff = -769 */
29 L = (long) (argc >= 4)? atoi(argv[3]) : 0xa3a3a3a3a3a3; /*179923220407203*/
31 /* Test integer to integer conversions */
32 uc1 = (uint8_t) C; /* 100 = 'd' */
33 us1 = (unsigned short) C; /* 100 = 'd' */
34 ui1 = (unsigned int) C; /* 100 = 'd' */
35 ul1 = (unsigned long) C; /* 100 = 'd' */
37 s1 = (short) C; /* 100 = 'd' */
38 i1 = (int) C; /* 100 = 'd' */
39 l1 = (long) C; /* 100 = 'd' */
41 printf("\nCHAR C = '%c' (%d)\t\t(0x%x)\n", C, C, C);
42 printf("char to short s1 = %d\t\t(0x%x)\n", s1, s1);
43 printf("char to int i1 = %d\t\t(0x%x)\n", i1, i1);
44 printf("char to long l1 = %ld\t\t(0x%lx)\n", l1, l1);
46 printf("\nchar to ubyte uc1 = %u\t\t(0x%x)\n", uc1, uc1);
47 printf("char to ushort us1 = %u\t\t(0x%x)\n", us1, us1);
48 printf("char to uint ui1 = %u\t\t(0x%x)\n", ui1, ui1);
49 printf("char to ulong ul1 = %lu\t\t(0x%lx)\n", ul1, ul1);
51 uc1 = (uint8_t) S; /* 0xff = 255 */
52 us1 = (unsigned short) S; /* 0xfcff = 64767 */
53 ui1 = (unsigned int) S; /* 0xfffffcff = 4294966527 */
54 ul1 = (unsigned long) S; /* */
56 c1 = (int8_t) S; /* 0xff = -1 */
57 i1 = (int) S; /* 0xfffffcff = -769 */
60 printf("\n\nSHORT S = %d\t\t(0x%x)\n", S, S);
61 printf("short to byte c1 = %d\t\t(0x%x)\n", c1, c1);
62 printf("short to int i1 = %d\t\t(0x%x)\n", i1, i1);
63 printf("short to long l1 = %ld\t\t(0x%lx)\n", l1, l1);
65 printf("\nshort to ubyte uc1 = %u\t\t(0x%x)\n", uc1, uc1);
66 printf("short to ushort us1 = %u\t\t(0x%x)\n", us1, us1);
67 printf("short to uint ui1 = %u\t\t(0x%x)\n", ui1, ui1);
68 printf("short to ulong ul1 = %lu\t\t(0x%lx)\n", ul1, ul1);
70 uc1 = (unsigned char) L; /* */
71 c1 = (int8_t) L; /* */
73 us1 = (unsigned short) L; /* */
75 ui1 = (unsigned int) L; /* */
76 ul1 = (unsigned long) L; /* */
78 printf("\n\nLONG L = %ld\t\t(0x%lx)\n", L, L);
79 printf("long to byte c1 = %d\t\t(0x%x)\n", c1, c1);
80 printf("long to short s1 = %d\t\t(0x%x)\n", s1, s1);
81 printf("long to int i1 = %d\t\t(0x%x)\n", i1, i1);
83 printf("\nlong to ubyte uc1 = %u\t\t(0x%x)\n", uc1, uc1);
84 printf("long to ushort us1 = %u\t\t(0x%x)\n", us1, us1);
85 printf("long to uint ui1 = %u\t\t(0x%x)\n", ui1, ui1);
86 printf("long to ulong ul1 = %lu\t\t(0x%lx)\n", ul1, ul1);
88 /* Test floating-point to integer conversions */
89 F = (float) (argc >= 4)? atof(argv[3]) : 1.0;
90 D = (argc >= 5)? atof(argv[4]) : 2.0;
92 us1 = (unsigned short) F;
93 ui1 = (unsigned int) F;
94 ul1 = (unsigned long) F;
100 printf("\n\nFLOAT F = %f\n", F);
101 printf("float to short s1 = %d\t\t(0x%x)\n", s1, s1);
102 printf("float to int i1 = %d\t\t(0x%x)\n", i1, i1);
104 printf("float to ushort us1 = %u\t\t(0x%x)\n", us1, us1);
105 printf("float to uint ui1 = %u\t\t(0x%x)\n", ui1, ui1);
106 printf("float to ulong ul1 = %lu\t\t(0x%lx)\n", ul1, ul1);
108 us1 = (unsigned short) D;
109 ui1 = (unsigned int) D;
110 ul1 = (unsigned long) D;
116 printf("\n\nDOUBLE D = %f\n", D);
117 printf("double to short s1 = %d\t\t(0x%x)\n", s1, s1);
118 printf("double to int i1 = %d\t\t(0x%x)\n", i1, i1);
119 printf("double to long l1 = %ld\t\t(0x%lx)\n", l1, l1);
121 printf("double to ushort us1 = %u\t\t(0x%x)\n", us1, us1);
122 printf("double to uint ui1 = %u\t\t(0x%x)\n", ui1, ui1);
123 printf("double to ulong ul1 = %lu\t\t(0x%lx)\n", ul1, ul1);