Home Forums C Programming doubt on comparision operator

Viewing 2 reply threads
  • Author
    Posts
    • #1977
      wadhwasharp
      Participant

      Hithe following code is giving 1 as answer but answer should be 0 …becoz 0.7 is not grater than 0.7


      int main(){
      float a=0.7;
      printf("%d",(0.7>a));
      }

      please tell me the reason

    • #3231
      will
      Participant

      @drop2kumar wrote:

      Hi
      the followiing code is giving 1 as answer but answer should be 0 …becoz 0.7 is not grater than 0.7

      int main(){
        float a=0.7;
        printf("%d",(0.7>a));
      }

       
      Actually you are comparing the float type variable with a value which can be any thing. It can be an integer, float or any thing else. So in that case compiler does not know about the type.
      Now if you explicitly mention the type of both the variables and then compare them the result would be according to your expectations. Hopefully this would clear your doubt.


      int main(){
        float a=0.7;
        float b=0.7;
        printf("%d",(b>a));
        printf("%d",(0.7>a));
       
      }
    • #3232

      Actually when we compare, compiler checks the type.. one u declared as float and other is number.. the default one the compiler takes in decimal format as double.. So, in representation double as 8 bytes and accurate value is entered.. while float contains 4 bytes and is comparitively less accurate than double.. So, double having atleast some minute value greater than float value.. thats why its value is true and hence value is one..

Viewing 2 reply threads
  • The forum ‘C Programming’ is closed to new topics and replies.