|
#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的结果。
为什么加了优化选项会有问题??????
结果不正确了。
大家可以试试。 |
|