Actual values which are either (a) unlikely to be meaningful in a real-world application, so are safe to use for this application or (b) will work the same as having "no value".
I beg to differ: 0 is a valid data value in many cases and is vastly different then having no value at all. Being able do distinguish knowledge of there being nothing from lack of knowledge about something is important. If you put 0 as an unknown value, then you can never have 0 as a legitimate value, since you could not distinguish between two of its uses otherwise. The same goes for an empty string.
Languages geared for numerical calculations even go further catching infinities and "not a number" results with each having its own designation.
In a war it doesn't matter who's right, only who's left.