Typecasting exercise
1#include <stdio.h>
2
3int main(void)
4{
5 char arr[] = { 0x11, 0x22, 0x33, 0x44 };
6
7 unsigned int *ptr;
8
9 ptr = (unsigned int *)arr;
10
11 printf("*ptr = %x\n", *ptr);
12
13 return 0;
14}
See Answer
1*ptr = 44332211
Note that memory is organised as below in array and integer
0x11 is byte 0
0x22 is byte 1
0x33 is byte 2
0x44 is byte 3
printf prints bytes from right to left
1#include <stdio.h>
2
3int main(void)
4{
5 char arr[] = { 0x44, 0x33, 0x22, 0x11 };
6
7 unsigned int *ptr;
8
9 ptr = (unsigned int *)arr;
10
11 printf("*ptr = %x\n", *ptr);
12
13 return 0;
14}
See Answer
1*ptr = 11223344
Note that memory is organised as below in array and integer
0x44 is byte 0
0x33 is byte 1
0x22 is byte 2
0x11 is byte 3
printf prints bytes from right to left
1#include <stdio.h>
2
3int main(void)
4{
5 unsigned int a = 0x11223344;
6
7 unsigned char *ptr;
8
9 ptr = (unsigned char *)&a;
10
11 printf("ptr[0] = %x\n", ptr[0]);
12 printf("ptr[1] = %x\n", ptr[1]);
13 printf("ptr[2] = %x\n", ptr[2]);
14 printf("ptr[3] = %x\n", ptr[3]);
15
16 return 0;
17}
See Answer
1ptr[0] = 44
2ptr[1] = 33
3ptr[2] = 22
4ptr[3] = 11
Note that memory is organised as below in integer
0x44 is byte 0
0x33 is byte 1
0x22 is byte 2
0x11 is byte 3
printf prints bytes from right to left
1#include <stdio.h>
2
3int main(void)
4{
5 unsigned int a = 0x44332211;
6
7 unsigned char *ptr;
8
9 ptr = (unsigned char *)&a;
10
11 printf("ptr[0] = %x\n", ptr[0]);
12 printf("ptr[1] = %x\n", ptr[1]);
13 printf("ptr[2] = %x\n", ptr[2]);
14 printf("ptr[3] = %x\n", ptr[3]);
15
16 return 0;
17}
See Answer
1ptr[0] = 11
2ptr[1] = 22
3ptr[2] = 33
4ptr[3] = 44
Note that memory is organised as below in integer
0x11 is byte 0
0x22 is byte 1
0x33 is byte 2
0x44 is byte 3
printf prints bytes from right to left
1#include <stdio.h>
2
3unsigned char buffer[] = {0x11, 0x22, 0x45, 0x67, 0xc0, 0xb5, 0xd7, 0x0b, 0xac, 0x5b};
4
5struct hdr {
6 unsigned short int fc;
7 unsigned short int duration;
8 unsigned char ra_addr[6];
9};
10
11int main(void)
12{
13 struct hdr *phdr;
14
15 phdr = (struct hdr *) buffer;
16
17 printf("phdr->fc = %x\n", phdr->fc);
18 printf("phdr->duration = %x\n", phdr->duration);
19
20 printf("phdr->ra_addr[0] = %x\n", phdr->ra_addr[0]);
21 printf("phdr->ra_addr[1] = %x\n", phdr->ra_addr[1]);
22 printf("phdr->ra_addr[2] = %x\n", phdr->ra_addr[2]);
23 printf("phdr->ra_addr[3] = %x\n", phdr->ra_addr[3]);
24 printf("phdr->ra_addr[4] = %x\n", phdr->ra_addr[4]);
25 printf("phdr->ra_addr[5] = %x\n", phdr->ra_addr[5]);
26
27 return 0;
28}
See Answer
1phdr->fc = 2211
2phdr->duration = 6745
3phdr->ra_addr[0] = c0
4phdr->ra_addr[1] = b5
5phdr->ra_addr[2] = d7
6phdr->ra_addr[3] = b
7phdr->ra_addr[4] = ac
8phdr->ra_addr[5] = 5b
See Also
Current Module
Previous Module
Next Module
Other Modules