Question: I'm trying to port an application written in C from linux to windows.

At the moment I'm done fixing the 'hard' parts like [missing posix features](http://svn.etv.cx/wsvn/swarmtv/?op=comp&compare[]=/branches/swarmtv-win32@270&compare[]=/branches/swarmtv-win32@271&manualorder=1&ignorews=0) and the like.

The application compiles, links and works on Windows now (except for the fork() stuff which will be replaced with windows service code later).

The only problem I'm having now is that within the MSYS shell it all works (this maps unix paths for me).

Outside of the MSYS shell it won't work because ~ is not available.

I'm looking for the best way to set the windows user home within my #ifdef stuff.

I read about `%USERPROFILE%` somewhere but that doesn't seem to [work](http://svn.etv.cx/wsvn/swarmtv/?op=comp&compare[]=/branches/swarmtv-win32@271&compare[]=/branches/swarmtv-win32@272).

Answer: 
They are used for values that could be unordered, such as NaN for floats and doubles. `1 <>= NaN` evaluates to false, whereas `x <>= y` evaluates to true for any pair of numbers, as long as neither number is NaN. The other operators you mention work the same, *mutatis mutandis*.
The long answer:

When dealing with floating point, two values will compare as one of `A<B`, `A=B`, `A>B` or unordered (if one is NaN).

The operators represent every interesting (non constant) row in [the truth table](http://www.digitalmars.com/d/2.0/expression.html#floating_point_comparisons). They can be interpreted as testing true for each of the cases for which the operator has the corresponding char, unless it has `!` in which case the value is inverted.