您的位置:首页 > 编程语言 > Java开发

Java初学感想

2014-04-18 13:03 211 查看
对于Java的变量让我想起了初学的C,资料借鉴网络,以此当作日记。

以下是关于C的内容

1.signed和unsigned的区别

对于这个区别我想说的是,无论是多少字节的类型,我认为只看最高位是1还是0。
如果是1的话,signed向unsigned转换时将转化为无符号型数据(即无负数)将成为正数,
如果是0的话,signed向unsigned转化时将不改变原有正负性。
unsigned向signed转化时同理。
2.字节长度大的与字节长度小的之间能的转化

如:char 一个字节向int (windows 32位机器)转化时将用其最高位来填充int型的高位3个字节
相反,将截取最后一个字节作为转化后的结果。
其他,int与float,原理一样
附上我的测试代码:

C代码







#include<stdio.h>

int main(){
signed char a=0xe0;
unsigned int b = a;
unsigned char c = a;
int d = 2147483647;
char e = d;
printf("a.size = %d ,b.szie = %d ,c.size = %d \n",sizeof(a),sizeof(b),sizeof(c));

printf("a = %d, b = %u , c = %d \n",a,b,c);//2^32-2^5-1

printf("d = %d (int) , e = %d (char) ",d,e);
/*

在将a 向unsigned int型转化时,

由于signed char是一个字节的,将用其高位进行填充b的高位的3个字节 结果为11111111 11111111 11111111 11100001

将 a 向unsigned char转化时高位的符号位将做位数据为出现结果为 11100001的整型结果即:2^8-1-2^5+1 = 224

d为01111111 11111111 11111111 11111111转化为char时将从最后一个字节截断,去最后一个字节作为结果

*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: