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

void main()
if (zero_val > MIN_VAL)
cout << "Not a problem!" << endl;
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!" ?