Question: I just saw this for the first time. The source code I'm looking at is in C

```
 if( rate < 0.){
   ...
 }
 else{
   ...
 }

```

What happens if `rate=0` ?

Answer: 
`0.` is a literal of type `double` (and value zero). By contrast, `0` is a literal of type `int`.
It is interpreting `0.` as a double (`0.0`) instead of an integer (`0`). 

Check the link: of ["working code"](http://codepad.org/LdSzUu5Y), showing the different sizes of various types of zero constants: