Hello I am new to C and was wondering if someone could just please explain to me what this function does? Thats all I just need help understanding it. I'm new to C so some one the syntax is tough for me to understand and Im not sure what the function does overall.
Thanks

#include <stdio.h>

    unsigned int mystery2(unsigned int n) {

      unsigned int temp = 
        (n >> 24) | 
        ((n << 8) & 0x00FF0000) |
        ((n >> 8) & 0x0000FF00) |
        (n << 24);

      return temp;
    }

    unsigned int prompt_and_read() {
      unsigned int next;
      printf("\nprompt> Please enter an integer (0 to exit): ");
      scanf("%u", &next);
      if (next == 0) exit(0);
      return next;
    }

    int main() {
      while (1) {
        unsigned int next = prompt_and_read();
        unsigned int result = mystery(next);
        printf("%d ===> %d\n", next, result);
      }
      return 0;
    }

Following the logic of this program: the main method calls "prompt_and_read();", this method simply takes in an unsigned integer and returns it to the main method. From there the "mystery2();" method is called. This is what I am assuming you are asking about. What is going in this method are called bitwise operations.

Simply search on Google for "Bitwise Operations in C" or on Daniweb and you will find plenty of explanations as to what they are.

Hope that helps.

Edited 4 Years Ago by Zetlin

Ya it did, I did a little more research, this supposubly reverses the byte order of n changing the values between little and big endian?

Looks correct, provided unsigned int is 32 bits (of course it could be 16 bits or 64 bits also). I would at least use unsigned long, which is at least 32 bits, and check sizeof (unsigned long), the swap operation is length dependent.

Edited 4 Years Ago by pyTony

This article has been dead for over six months. Start a new discussion instead.