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*.
They are comparison operators in D, just like `==`, `<` and `>=`. In D the value `nan` (not a number) is taken into account. Two floating point numbers cannot only compare less, equal or greater, but also unordered, which is the case, if one of the comparands is `nan`. 

Hence `<>=` means less, equal or greater. In other words `<>=` means ordered. 

The comparison operators starting with an `!` return exactly the opposite of their counterpart without the `!`. In particular, all of them evaluate to `true`, if one of the comparands is `nan`. 

Here's a full list of all comparison operators in D:

* `==`
* `!=`
* `>`
* `>=`
* `<`
* `<=`
* `!<>=`
* `<>`
* `<>=`
* `!<=`
* `!<`
* `!>=`
* `!>`
* `!<>`

You can find this list in [the D documentation.](http://dlang.org/expression.html) The behaviours of all of these operators is explained there.