@Purpose
2016-08-17T10:11:50.000000Z
字数 558
阅读 993
蛋协
int-2147483648~+2147483648
unsigned[int]0~4294967295
short [int]-32768~32768
unsigned short[int]0~65535
Long int-2147483648~+2147483648
unsigned [int]0~4294967295
[signed] char-128~+127
unsigned char0~255
float3.4 x 10^(-38)~ 3.4 x 10^(+38)
double1.7 x 10^(-308)~ 1.7 x10^(+308)
long double1.7 x 10^(-308)~ 1.7 x 10^(+308)
char-1的补码为0b11111111
a=b 使得b也为0b11111111
但是b得数据类型为 unsigned char
不同的数据类型告诉系统
如何去解析变量在内存中粗村的数值
而比较a,b的大小已经是一种不规范的行为了
但是在内存中它们的数据是一样的
是a=b
只是我们输出的时候没法解析
两个不同数据类型的变量进行比较的时候
要注意两个变量的表示范围
虽然输出一个是-1一个是255
但是在内存中两者是一样的均为0b11111111
进而执行if(a == b)是成立的
C风格的强制类型转换很强大很危险
用不好就有问题