返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #20881同步于 2007/9/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
【求教】C笔试题:float x; if(x!=x)在什么情况下为真?
qingtianaaa
2007/9/5镜像同步28 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
gcc编译结果
[QUOTE]
004012BF . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004012C2 . D945 FC FLD DWORD PTR SS:[EBP-4]
004012C5 . D945 FC FLD DWORD PTR SS:[EBP-4]
004012C8 . D9C9 FXCH ST(1)
004012CA . DAE9 FUCOMPP
004012CC . DFE0 FSTSW AX
004012CE . 9E SAHF[/QUOTE]
VC6编译结果
[QUOTE]
00401028 |. C745 FC DC693>MOV DWORD PTR SS:[EBP-4],373A69DC
0040102F |. D945 FC FLD DWORD PTR SS:[EBP-4]
00401032 |. D85D FC FCOMP DWORD PTR SS:[EBP-4]
00401035 |. DFE0 FSTSW AX
00401037 |. F6C4 40 TEST AH,40[/QUOTE]
一个是把x的值取32位精度 分别fld到st(0)和st(1),然后FXCH交换st(1)和st(0)...
FUCOMPP比较st(1)和st(0)并pop 剩下的就是写标志位了。。。
还有一个是fld x的32位精度 到st(0),然后直接比较源和目的的值。。。
我反正是看不出来啥时候这种比较的结果能为True。。。
【 在 qingtianaaa 的大作中提到: 】