A small example of short versus int conversion

  • 2020-04-01 21:35:45
  • OfStack


#include <stdio.h>
int main()
{
    short a=-1;
    unsigned int b=a;
    int c=a;
    printf("%xn", b);
    printf("%dn", c);
    a=1;
    b=a;
    c=a;

    printf("%xn", b);
    printf("%dn", c);

    return 0;
}

The output is:
FFFFFFFF
- 1
1
1
It indicates that when short data is assigned to int or unsigned int data, if short data is negative, the extended bits are all 1, If the short data is positive, the extended bits are all zeros.


#include <stdio.h>
int main()
{
    unsigned short a=-1;
    unsigned int b=a;
    int c=a;
    printf("%xn", b);
    printf("%dn", c);
    a=1;
    b=a;
    c=a;

    printf("%xn", b);
    printf("%dn", c);

    return 0;
}

The output is:
FFFF
65535
1
1
When unsigned short data is assigned to int or unsigned int data, the extended bits are all 0


Related articles: