added the edianness test
authorHansjürg Wenger <hansjuerg.wenger@bfh.ch>
Tue, 22 Sep 2015 20:46:38 +0000 (22:46 +0200)
committerHansjürg Wenger <hansjuerg.wenger@bfh.ch>
Tue, 22 Sep 2015 20:46:38 +0000 (22:46 +0200)
ntest.c

diff --git a/ntest.c b/ntest.c
index cf914a0..c340b77 100644 (file)
--- a/ntest.c
+++ b/ntest.c
@@ -1,7 +1,7 @@
 //
 // silly program to demonstrate endianness of a system
 //
-// (c) BFH, WGH1 10.2012
+// (c) BFH, WGH1 2012-2015
 //
 // compile: cc ntest.c -o ntest
 // run: ./ntest
 
 void main (void){
 
-       int tv=439041101;       // test variable "tv" 
+       int tv=0x1A2B3C4D;      // test variable "tv"
        int so;                 // size of (tv)
        int i;                  // used for iteration
        unsigned char *b;       // a pointer to a byte
-
+       unsigned char lob;      // low oder byte
+       unsigned char hob;      // high oder byte
+       unsigned char lab;      // byte at lowest address
 
        printf ("\n");
 
@@ -33,7 +35,7 @@ void main (void){
 
        printf ("\n");
 
-       // read and print bytes of "tv", "high end" first
+       // read and print bytes of "tv", "highest addr" first
        for(i=(so-1);i>=0;i--)
        {
                printf ("Byte %i: ",i);
@@ -41,6 +43,27 @@ void main (void){
                printf ("%X\n",*(b+i));
        }
 
-       printf ("\n");
+       // assign byte at lowest address
+       lab=*b;
+
+       // assign low order byte of tv (modulo 256)
+       lob=tv%0x100;
 
+       // assign high oder byte of tv (shift left 8*(so-1) times)
+       hob=(tv>>8*(so-1));
+
+       // print out systems edianness
+       printf ("\nLaufe auf einem ");
+       if ( lab == lob )
+       {
+               printf ("Little Endian System!\n\n");
+       }
+        else if ( lab == hob )
+       {
+               printf ("Big Endian System!\n\n");
+       }
+       else
+       {
+               printf ("System mit unbekannter Ediannness!\n\n");
+       }
 }