二进制
#include<stdio.h>
void main()
{
unsigned char c=250; //二进制是1111 1010
char cx=c; //二进制也是1111 1010,最高位是1,认为是负数
printf("c=%u,xc=%d\n",c,cx); //xc是cx的补码 cx=1111 1010 , xc=1000 0110
int x=-1; //补码是1111 1111 1111 1111 1111 1111 1111 1111 1111
printf("%u\n",x);/*输出控制符%u是指按无符号整数输出变量x。而x的二进制值所以位都是1,
按无符号数处理,得到的是最大无符号整数 */
int y=1;
printf("%d\n",(y<<sizeof(int)*8-1)-1);//得到的是 最大带符号整数
/*<< 是向左按二进制进行移位运算,在sizeof(int)个字节中,除了最高位的
符号位为0,其余位均为1,即是最大带符号整数(即可表示的最大正整数)*/
int i=12345;
printf("%d\n",i);
printf("%c\n",i); //将i按字符输出,则只取最低字节的值
printf("%f\n",i); //格式控制符与i的类型不一致,结果?
}
<< 是向左按二进制进行移位运算,在sizeof(