signed char a ; //char a; unsinged char b; signed int c; //int c; unsinged int d;
计算机中存储的是数据的补码,如果位数超过限长,会将低位的保留,自动去除高位的数据。
所以因为此会出现比较有趣的事情。
如:
#include <stdio.h> int main() { char a = 200; printf("a = %d\n",a); //-56 return 0; }
或
#include <stdio.h> int main() { unsigned char b = 280; printf("b = %d\n",b); //24 return 0; }
强转类型: 采用某方方式将某种数据类型强制转换位我们需要的数据类型.
注:强转只是临时强转,本身的数据类型没有改变。
格式: (需要强制的数类型)变量名
若是用户使用运算符两边的类型不匹配,并且用户没有显示的指定匹配那种类型。系统会默认触发隐式的强转,强转规则如下:
double ←←←←←←float 高
↑
↑
long
↑
↑
unsigned
↑
↑
int ←←←←←← char,short 低
之前很多稀奇古怪的看似不合常理的输出,其实都有内部逻辑的,通过这两节的学习,哈哈,找到了内部的逻辑。