永发信息网

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

答案:4  悬赏:80  手机版
解决时间 2021-03-14 14:34
1. 下列程序段的输出结果是______。
int a=1;
long b=a*0x12345678;
printf("%x\n", b);
最佳答案
数据类型跟编译器和操作系统,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的,那么你讲得到一个错误的转换值,这就是危险的了。
全部回答
强制类型转换
输出时按%x输出,即输出16进制数。
不知道你有什么疑问,十六进制12345678乘1,再转成十六进制输出,不还是12345678么
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
赵师傅盲人中医推拿在哪里啊,我有事要去这个
货车码表不灵活怎么办啊
求 华晨宇的 我的滑板鞋 谢谢
雪佛兰爱唯欧的汽油滤清器上有根电线有什么用
南湾鳄鱼山景区火山国家地质公园售票处地址有
沈阳有几个季节?
名将之后观后感
成都皮肤生长因子药哪里有卖
同一批次高考志愿是否优先考虑本省院校?
内心深处的那首歌,作文800字,不一定要原创
关于济南的旧书市场
校园恶少重生小说
菜冒双全我想知道这个在什么地方
我现在用的是AVAST,不知道搭配什么清理优化
苹果笔记本是怎么计算充电次数的
推荐资讯
五菱宏光s1车身停稳还会抖动是怎么回事
鸿鹏旅馆地址有知道的么?有点事想过去
用别人的身份证能分期付款买手机吗
原价6000多的电脑一年后折旧价是多少
持德国有效期一年的留学居留签证(Aufenthalt
传奇霸业 先点boss积分好还是先翅膀
《水浒传》第六十二回——放冷箭燕青救主 劫
户口房子在合肥,家人都在淮南,最好考哪里
我想邮东西,快件 从盘锦到长春几天能到?
判断题四千零五万写作4050000.
1991年属羊的女人和1980年属猴的配吗
喇嘛达瓦地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?