Я хотел знать, какое максимальное число я могу набрать в выражении макроса, пока оно не переполнится. Я написал следующую программу:
#define I (INT_MAX + 1)
#define J (LONG_MAX + 1)
int main()
{
cout << INT_MAX << I << endl;
cout << LONG_MAX << J << endl;
return 0;
}
Я получил следующий вывод:
2147483647-2147483648
9223372036854775807-9223372036854775808
Я не понимаю переполнение для случая int, если оно может хранить значение LONG_MAX , Кроме того, я вспомнил, что макросы также могут хранить десятичные дроби, такие как 3.14 (PI), поэтому это должен быть тип с плавающей запятой. Я сейчас в замешательстве. Пожалуйста, помогите.