Хотя все правы, говоря, что тип int на 32-битной машине, скорее всего, 2 ^ 32, в вашей методологии есть явный недостаток.
Предположим, что int был 16-битным. Вы присваиваете значение, которое будет переполнять z, поэтому само z переполняется. Когда вы вычисляете x + y, вы также переполняете тип int, очень вероятно, что оба случая переполнятся до одного и того же значения, то есть вы достигнете своего равенства независимо (это, вероятно, зависит от компилятора, я не совсем уверен, х + у будет повышен).
Правильный способ проведения эксперимента: z имеет больший тип данных, чем x и y. Например (извините за простой C, я не очень люблю C #. Надеюсь, что это иллюстрирует методологию.)
int x = INT_MAX;
int y = INT_MAX;
int sum = x + y;
long long z = INT_MAX+INT_MAX;
if(sum == z)
printf("Why didn't sum overflow?!\n");
Сравнение суммы и z важно, так как сравнение x + y и z может все же получиться в зависимости от того, как компилятор обрабатывает продвижение.