Первое должно быть гарантировано верно: std::numeric_limits<int>::max() == INT_MAX
.
Однако для unsigned long long нет никаких гарантий, так как компилятор / библиотеки не обязаны их поддерживать. Но ...
Если ваш компилятор и библиотеки поддерживают unsigned long long, он должен быть одинаковым, поскольку ограничения для типов будут одинаковыми независимо от того, как вы спрашиваете.
да, это разумное предположение.