C言語 : 練習

int = char[4] であることとリトルエンディアンを体験。
まず、int -> char[4]から

#include <stdio.h>

void print_chars (int i)
 {
   char *cc = (char *) &i;
   int j;
   for (j=0; j<4; ++j) {
     printf("%d\n",(int)cc[j]);
   }
 }

int main (int argc, char **argv)
 {
   print_chars(0x01020304);
   print_chars(0x04030201);
 }

結果は

$ ./a.exe
4
3
2
1
1
2
3
4

つぎは、char[4] -> int

#include <stdio.h>

void print_int (char *str)
 {
   int i = * (int *) str;
   printf("%d\n",i);
 }

int main (int argc, char **argv)
 {
   print_int("A\0\0\0");
   print_int("\0A\0\0");
 }

結果は

$ ./a.exe 
65
16640