QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 837|回复: 8

gcc 在这点上没有vc好~~!!!

[复制链接]
发表于 2004-6-4 00:28:18 | 显示全部楼层 |阅读模式
[code:1]#include<stdio.h>
double recip(int denom)
{
  return 1.0/(double) denom;
}
void do_nothing(){}

void test1(int denom)
{
  double r1,r2;
  int t1,t2;

r1=recip(denom);
r2=recip(denom);

t1=r1==r2;
do_nothing();
t2=r1==r2;
printf("%f    %f------->%d\n",r1,r2,t1);
  
printf("%f    %f------->%d\n",r1,r2,t2);

}



int main()
{
  test1(10);
}

用 -O2 参数 编译看看[/code:1]
发表于 2004-6-4 09:14:16 | 显示全部楼层
奇怪,加了-O2后=和==的优先级就变了?
回复

使用道具 举报

发表于 2004-6-4 09:35:21 | 显示全部楼层
0.100000                 0.100000------------->1
0.100000                 0.100000------------->1
what's matter?
回复

使用道具 举报

发表于 2004-6-4 09:53:00 | 显示全部楼层
问题是加了-O2就变成了
0.100000 0.100000------------->0
0.100000 0.100000------------->1
回复

使用道具 举报

发表于 2004-6-4 11:38:26 | 显示全部楼层
but,  there 're no such problem on my os (as2.1 gcc 2.96)

gcc -O2 linuxfans.cpp -o fans
./fans
0.100000 0.100000------------->1
0.100000 0.100000------------->1
回复

使用道具 举报

发表于 2004-6-4 11:43:26 | 显示全部楼层
我的gcc3.3.2无此问题(fc1)
回复

使用道具 举报

发表于 2004-6-4 11:54:45 | 显示全部楼层
我的rh9,gcc3.2.2有这问题,既然这样就当成gcc的bug啦
回复

使用道具 举报

 楼主| 发表于 2004-6-4 14:44:18 | 显示全部楼层
这个不是bug .
intel 的cpu 在算浮点数的时候 会用到 一个80位的高精度 寄存器。这是主要原因。
不过这也是gcc的问题。
所以的大家 不要再编译的时候,随便,用-O2的这个选项

to flyaway:你把文件名的后缀换成.c再看看.我没有你哪个版本的gcc.
回复

使用道具 举报

发表于 2004-6-4 14:52:26 | 显示全部楼层
same result
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 04:39 , Processed in 0.037940 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表