QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 664|回复: 1

gcc的问题,优化之后结果不正确。

[复制链接]
发表于 2004-11-12 19:34:33 | 显示全部楼层 |阅读模式
#ifdef _cplusplus
#include <iostream>
#else
#include <stdio.h>
#endif
using namespace std;
double getResult(int x)
{
    return 1.0/x;
}
int main()
{
    double a,b;
    int index=0;
    int x[10]={12,1,212,887,56464654,-1232,0,787,-7889,-4555};
    while(index<10)
    {
    a=getResult(x[index]);
    b=getResult(x[index]);
    if(a==b)
    {
#ifdef _cpluscplus
        cout<<"a==b is true"<<endl;
#else
        printf("a==b is true\n");
#endif
    }
    else
    {
#ifdef _cplusplus
        cout<<"a==b is false"<<endl;
#else
        printf("a==b is false\n");
#endif
    }
    index++;
    }
    return 0;
}

用下面编译之后:
gcc -o test main.cpp -O2
或者
g++ -o test main.cpp -O2
你会得到大部分是 a==b is false的结果。
而用
gcc -o test main.cpp
或者:
g++ -o test main.cpp
你会得到:a==b is true的结果。

为什么加了优化选项会有问题??????
结果不正确了。
大家可以试试。
 楼主| 发表于 2004-11-12 19:46:42 | 显示全部楼层
除数为0也没有错,怎么回事啊?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 03:44 , Processed in 0.034266 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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