C语言求助 答案我已经知道了,求解释。为什么int变成long型就这样了?

 我来答
景怀雨酒书
2019-10-17 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:29%
帮助的人:876万
展开全部
数据类型跟编译器和操作系统,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的,那么你讲得到一个错误的转换值,这就是危险的了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式