Consider this bit of code:
LARGE_INTEGER l;
size_t s;
if (s < l.QuadPart) return 1;
return 0;
When this is compiled under x64 it generates the C4018 signed/unsigned mismatch compiler warning (Ignore the uninitialized local variable warning).
The warning is fine, since QuadPart is LONGLONG which is signed and size_t is unsigned.
But when I compile this under 32-bit there is no warning? How come? Under 32-bit LONGLONG is still signed and size_t is unsigned.