变量类型转换
先来一道例题:
#include<stdio.h>
int main()
{
char a=-1;
char b=255;
unsigned char c=-1;
unsigned char d=255;
int e=a;
int f=b;
int h=c;
int i=d;
unsigned int j=a;
unsigned int k=b;
unsigned int x=c;
unsigned int y=d;
printf("%d\n",a);//-1
printf("%d\n",b);//-1
printf("%d\n",c);//255
printf("%d\n",d);//255
printf("%d\n",e);//-1
printf("%d\n",f);//-1
printf("%d\n",h);//255
printf("%d\n",i);//255
printf("%d\n",j);//4294967295
printf("%d\n",k);//4294967295
printf("%d\n",x);//255
printf("%d\n",y);//255
}
知识点:
char : -128-127
unsigned :0-255
若不在此范围内,方法:绝对值相加等于256!!!
因此:
char a=-1;//在范围内,-1
char b=255;//不在范围内,-1
unsigned char c=-1;//不在范围内,255
unsigned char d=255;//在范围内,255
unsigned int j=a;//4294967295
unsigned int k=b;//4294967295
(-1)2=1111 1111 1111 1111 1111 1111 1111 1111
-1的unsigned int为最大值-1,即2的32次方