Please explain me a strange (to me) behavior of the following piece of code:

#include <iostream>
using namespace std;

#define MIN_VAL -2147483648

typedef enum E_TEST
{
zero_val = 0,
one_val = 1
} E_TEST;

void main()
{
if (zero_val > MIN_VAL)
cout << "Not a problem!" << endl;
else
cout << "It's a problem!" << endl;
}

So, as you can guess, "It's a problem" is printed. I'd like to understand why. According to MSDN, the limits of a signed int are -(2^32)/2 to (2^32)/2-1, e.g. -2147483648 to 2147483647. Enums are also 4-bytes types. So where is the problem? Why the result isn't "Not a problem!" ?

Thanks!