标题:vc中强制转换问题,编译没有错误,调试时runtime error是怎么回事,求助
只看楼主
络雪
该用户已被删除
已结贴  问题点数:20 回复次数:7 
vc中强制转换问题,编译没有错误,调试时runtime error是怎么回事,求助
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: runtime 编译 调试 
2010-04-28 21:02
gaofly07
该用户已被删除
得分:5 
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-28 22:02
络雪
该用户已被删除
得分:0 
回复 2楼 gaofly07
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-29 07:47
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
得分:5 
知道 8086汇编里的DIV除法指令么?  在8086汇编里面 除法是32位处以16位  16位处以8位
(int)a/10  对于你的这句 是把双精度变量a强制转换成整型,我假设10在代码段中也占据32位的空间,那么两个32位相除在8086系列芯片的DIV除法里应该会报错的 。

另外相同的代码在不同的编译器里面出现的结果也是不同,比如你这段代码在我的编译器中可以正确编译并运行,个人觉得是由于编译器在编译时会有代码优化和翻译成中间代码,再翻译到机器代码等等的过程,所以不同的编译器处理的手段就不一样,导致生成后的机器指令之间也会有差别,所以会出现上面的运行时错误。

当然,以上只是我个人的分析,可能有不对的地方,仅供参考,欢迎批评指教。以下是8086汇编的DIV指令信息。

无符号数除法指令 DIV(DIVision)
 

8086汇编语言指令格式:
DIV OPRD

8086汇编语言指令功能:
实现两个无符号二进制数除法运算
 

8086汇编语言指令说明:
1. 其中OPRD为任一个通用寄存器或存储器操作数
2. 字节相除,被除数在AX中;字相除,被除数在DX,AX中,除数在OPRD中.
字节除法: (AL)<--(AX)/OPRD,(AH)<--(AX)MOD OPRD
字除法: (AX)<--(DX)(AX)/OPRD,(DX)<--(DX)(AX) MOD OPRD

3. 示例: DIV BETA [BX]
DIV CX;商在AX中,余数在DX中
DIV BL;商在AL中,作数在AH中

4. 当除法的商产生溢出时,例如字节除法的商大于0FFH,字除法的商大于0FFFFH将置溢出标志位OF=1,并产生一 个类型0溢出中断

5. 本指令不产生有效的示志位。


qq:69558139
2010-04-29 08:19
络雪
该用户已被删除
得分:0 
回复 4楼 chengstone
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-29 09:25
守候
该用户已被删除
得分:10 
回复 4楼 chengstone
提示: 作者被禁止或删除 内容自动屏蔽
2010-04-29 14:19
张丹
Rank: 2
等 级:论坛游民
帖 子:94
专家分:66
注 册:2010-6-7
得分:0 
学习了
2010-06-13 10:41
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
#include<stdio.h>
int main()
{
    double a;
    printf("90分以上为A,60分以下为E,10分一个等级\n");
    printf("Input a score:\n");
    scanf("%lf",&a);
}
即使不做那个运算还是会报错,前几天闲逛CSDN的时候,遇到了这个问题。
据说是 浮点库加载的问题,/
http://topic.

我就是真命天子,顺我者生,逆我者死!
2010-06-13 12:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-304776-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018881 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved