"const int" is usually preferable since then the compiler will be able to perform type checking rather than just blindly inserting text into an expression.
Although I did once meet a C compiler that pretty much ignored the "const" part of "const int" and therefore actually allocated memory (in RAM!) and stored the value, fetching it again every time it was needed. (I believe it met the C99/C++ standard of not allowing you to actually change the value, though.) Made for slower code and wasted RAM... which there wasn't a lot of (whereas there was plenty of ROM). (It's also a case where you run the risk of "casting out constness," as Scott Meyers says.) I was pretty surprised...
When I'm using decent compilers I'll also use, e.g., 60*60*24 to make it more obvious where the "magic number" came from, knowing that the optimizer will figure out that the express is constant and not re-compute it every time.
And I agree that using "const int foo=86400; // 60*60*24" is just asking for trouble in that you're likely to forget to keep both "in sync" if it every has to change.
---Joel