C语言求助 答案我已经知道了,求解释。为什么int变成long型就这样了?
展开全部
数据类型跟编译器和操作系统,cpu都有关系。
比如,在8086的cpu上,一个整形int就是16位的。
而在arm中,一个int类型,在不改变编译选项的默认情况下个,它跟long是一样的。就是说,默认的int其实就是long
int。而short就是
short
int。long
int在arm中默认编译下来占用4个字节。short
int占用2个字节。因为arm是32位的cpu。但是,arm可以使用thumb指令,你可以修改编译选项来完成。就是说,你可以让一个整形值占用16位。
再比如在单片机上,一个int类型就是8位的一个字节。
所以,不管是short
,long
,double,float,char,还是各种结构体,他们的本质是占用的内存长度的大小。如果这么看,你讲对数据类型有更加深入的理解。
比如说,你把一个short强制转换成了long。在内存上,就是尝试去增加两个字节连续的空间。这是安全的。但是你反过来强制转换。把一个long强制转换成short。假如在缩减的两个字节空间内的位有不是0的,那么你讲得到一个错误的转换值,这就是危险的了。
比如,在8086的cpu上,一个整形int就是16位的。
而在arm中,一个int类型,在不改变编译选项的默认情况下个,它跟long是一样的。就是说,默认的int其实就是long
int。而short就是
short
int。long
int在arm中默认编译下来占用4个字节。short
int占用2个字节。因为arm是32位的cpu。但是,arm可以使用thumb指令,你可以修改编译选项来完成。就是说,你可以让一个整形值占用16位。
再比如在单片机上,一个int类型就是8位的一个字节。
所以,不管是short
,long
,double,float,char,还是各种结构体,他们的本质是占用的内存长度的大小。如果这么看,你讲对数据类型有更加深入的理解。
比如说,你把一个short强制转换成了long。在内存上,就是尝试去增加两个字节连续的空间。这是安全的。但是你反过来强制转换。把一个long强制转换成short。假如在缩减的两个字节空间内的位有不是0的,那么你讲得到一个错误的转换值,这就是危险的了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询