主页 > 互联网  > 

无符号整数和带符号整数的相互转换

无符号整数和带符号整数的相互转换

无符号字符数x转换为带符号字符数时,当时,转换后仍然为x;当时,转换后变为。

带符号字符数y转换为无符号字符数时,当时,转换后变为;当时,转换后仍然为y。

无符号整数和带符号整数的相互转换,实质上就是类型的强制转换。

源程序

void utosfun( unsigned char u[], char *pt1 ); void stoufun( char s[],unsigned char *pt2 );

void main() {     unsigned char ux[2]={9,129},syu[2],fsyu[2];     char sy[2]={2,-2},uxs[2],fuxs[2];     int i;     utosfun(ux,uxs);      stoufun(sy,syu);     for(i=0;i<2;i++)      fsyu[i]=(unsigned char)sy[i]; //强制类型转换     for(i=0;i<2;i++)      fuxs[i]=(char)ux[i];  //强制类型转换     while(1);

}

/**无符号数转换为带符号数**/ void utosfun( unsigned char u[], char *pt1 ) {     int j,n=2;     for(j=0;j<2;j++)     {      if(u[j]<(n<<7))         pt1[j]=u[j];      else         pt1[j]=u[j]-(n<<8);   } }

/**带符号数转换为无符号数**/ void stoufun(char s[], unsigned char  *pt2) {     int k,n=2;     for(k=0;k<2;k++)     {      if(s[k]<0)         pt2[k]=s[k]+(n<<8);      else         pt2[k]=s[k];   } }

程序运行后:

带符号字符数组sy[]元素转换为无符号字符数后存放在数组syu[]中;数组sy[]元素强制转换为无符号字符数后存放在数组fsyu[]中。syu[]与fsyu[]元素相同。

无符号字符数组ux[]元素转换为带符号字符数后存放在数组uxs[]中;数组ux[]元素强制转换为带符号字符数后存放在数组fuxs[]中。uxs[]和fuxs[]元素相同。

    

标签:

无符号整数和带符号整数的相互转换由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“无符号整数和带符号整数的相互转换