社区
C语言
帖子详情
long转换为int后,int里的数据是long的高16位还是低16位的?
janno025
2011-09-16 03:00:45
新手求教!long能转转换为int吗?(假设long为32位,int为16位)
如果能,int里的数据是long的低16位吗?
...全文
755
18
打赏
收藏
long转换为int后,int里的数据是long的高16位还是低16位的?
新手求教!long能转转换为int吗?(假设long为32位,int为16位) 如果能,int里的数据是long的低16位吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ljhhh0123
2011-09-16
打赏
举报
回复
[Quote=引用 4 楼 janno025 的回复:]
还有一个问题,一个8位数据,如果值为0xff,乘以n,再除以n,此数据会溢出不?
[/Quote]
char ch=0xff;
ch=ch*0xff/0xff;
不能溢出,因为C规定,小于整型的宽度都转成整型运算后再转回去.
C标准要求转换操作时要尽量保留原来的值大小.
不过最好不要写这种挑战极限的代码.
modicum_ck
2011-09-16
打赏
举报
回复
[Quote=引用 16 楼 demon__hunter 的回复:]
如果long的值,在能被int所正确表示范围内的话,c标准保证会转换成功,这个显然易见的。
如果long的值超出了被int所正确表示的范围内的话,由实现来定义转换后的结果。可能会int里的数据是long的低16位,也可能不会。
[/Quote]
++
机智的呆呆
2011-09-16
打赏
举报
回复
如果long的值,在能被int所正确表示范围内的话,c标准保证会转换成功,这个显然易见的。
如果long的值超出了被int所正确表示的范围内的话,由实现来定义转换后的结果。可能会int里的数据是long的低16位,也可能不会。
hrx1989
2011-09-16
打赏
举报
回复
[Quote=引用 4 楼 janno025 的回复:]
还有一个问题,一个8位数据,如果值为0xff,乘以n,再除以n,此数据会溢出不?
[/Quote]
一定是溢出的。。
AnYidan
2011-09-16
打赏
举报
回复
[Quote=引用 13 楼 wangbishi22 的回复:]
引用 4 楼 janno025 的回复:
还有一个问题,一个8位数据,如果值为0xff,乘以n,再除以n,此数据会溢出不?
溢出肯定是存在的,但是这个数据的值不会变啊,一直是0xff.
前提是数据为unsigned类型
[/Quote]
如过 n 是 float / double 呢?
君恪
2011-09-16
打赏
举报
回复
[Quote=引用 4 楼 janno025 的回复:]
还有一个问题,一个8位数据,如果值为0xff,乘以n,再除以n,此数据会溢出不?
[/Quote]
溢出肯定是存在的,但是这个数据的值不会变啊,一直是0xff.
前提是数据为unsigned类型
如此的肤浅
2011-09-16
打赏
举报
回复
那个应该不能转换吧,一转换差别大的去了
pjl1119
2011-09-16
打赏
举报
回复
由高到低强制转换,保留低位
东莞某某某
2011-09-16
打赏
举报
回复
你可以 long lTmp = 1 ; int iTmp = (int)lTmp; 测试一下
bcj00000
2011-09-16
打赏
举报
回复
注意大端,小端!
赵4老师
2011-09-16
打赏
举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
xwfde
2011-09-16
打赏
举报
回复
任何截断都取低位。
出现乘法会增加至32位进行运算,算完后赋值时再次截断,不过八位的0xff是负一,乘除6后肯定还是负一。
赵忠道:“调试看汇编一切皆自明”
烈火蜓蜻
2011-09-16
打赏
举报
回复
[Quote=引用 4 楼 janno025 的回复:]
还有一个问题,一个8位数据,如果值为0xff,乘以n,再除以n,此数据会溢出不?
[/Quote]
这样的话,值就不再是原来的数据了,
zhanshen2891
2011-09-16
打赏
举报
回复
测试一下呗,我觉得应该会还原
janno025
2011-09-16
打赏
举报
回复
还有一个问题,一个8位数据,如果值为0xff,乘以n,再除以n,此数据会溢出不?
yinlijun2001
2011-09-16
打赏
举报
回复
[Quote=引用楼主 janno025 的回复:]
新手求教!long能转转换为int吗?(假设long为32位,int为16位)
如果能,int里的数据是long的低16位吗?
[/Quote]
正解
turing-complete
2011-09-16
打赏
举报
回复
截断高位,保留低位
justonceup
2011-09-16
打赏
举报
回复
低16位
神经网络与量子计算的交叉研究.pptx
神经网络与量子计算的交叉研究.pptx
非线性端口 MEMS 麦克风的 Simscape 模型.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例
数据
可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
用于超声成像和仿真的 MATLAB 工具箱.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例
数据
可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
HFI
高
频注入仿真—matlab.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例
数据
可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
北京工商大学上网登陆版源码.zip
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章