70,020
社区成员




signed char a=0xe0;
unsigned int b=a;
unsigned char c=a;
#include<stdlib.h>
#include<stdio.h>
int main()
{
signed char a=0xe0;
unsigned int b=a;
unsigned char c=a;
if(a>0&&b>0)
printf("a>0&&b>0\n");
if(a==c)
printf("a==c");
char aa[10];
itoa(b,aa,16);
printf("%s\n",aa);
return 0;
}
signed char a=0xe0;//二进制为:1110 0000=-32
//有符号数赋值给无符号数,将有符号数转换为无符号数(c语言有这个原则)so->>b=0000 0000 1110 000=224
unsigned int b=a;
unsigned char c=a;//c不存在溢出问题,所以c=1110 0000
A:错。因为a<0
B:对。因为char型与int型比较时自动提升为int型。
C:错。因为char型提升为无符号的int时,不够的位补零,(当然char提升为signed int时,不够位补1)。