The output is different for the following two codes when compiled as : "g++ -O foo.cpp" 1st COde : Code: #include<iostream.h> #include<math.h> int main(){ double d=log(8)/log(2); cout<<"d="<<d<<"\t floor(d)="<<floor(d); //<<"\t"<<floor(10.0)<<"\n"; return 0; } ------------------------------------------------------------------------------------------------------------------ 2nd COde : Code: #include<iostream.h> #include<math.h> int main(){ double d=log(8)/log(2); cout<<"d="<<d<<"\t floor(d)="<<floor(d)<<"\t"<<floor(10.0)<<"\n"; return 0; } --------------------------------------------------------------------------------------------------------------- Expected output : d=3 floor(d)=3 10 But The First code give : d=3 floor(d)=2 10 while the second gives the right output. Could nyone plz explain whats going wrong!! Nikhil
Nope. Its should be d=3 floor(d)=2 10 because log(8)/log(2) = 2.999999..... and so floor should be 2. I guess the difference in output should be a bug as far as I think.
i think u r right. and thanx for replying. But the difference in output is not recognized as a Compiler bug. I jus learned it from this GCC website. Check it out: http://gcc.gnu.org/bugs.html#nonbugs_general