#include <iostream>
#include <climits>
int main(void) {
std::cout << SHRT_MIN << std::endl;
std::cout << SHRT_MAX << std::endl;
//-32768 ~ 32767 is the range
short a;
std::cin >> a;
std::cout << "decimal: " << a << std::endl;//decimal
return 0;
}
Посмотрите на приведенный выше код, который используется для наблюдения за тем, что происходит, когда я ввожу целое число вне диапазона коротких значений.
Когда я вводю любое целое число меньше -32768, например -3333333, -32768 будет напечатано.
Когда я введу любое целое число больше 32767, например, 3333333, будет напечатано 32767.
Теперь я хочу посмотреть, что произойдет, когда я введу целое число вне диапазона шорты без знака.
Вот код:
#include <iostream>
#include <climits>
int main(void) {
std::cout << USHRT_MAX << std::endl;
unsigned short a;
std::cin >> a;
std::cout << "decimal: " << a << std::endl;//decimal
return 0;
}
Кажется, что нет USHRT_MIN , но я думаю, что это 0, который является самым маленьким.
Таким образом, диапазон беззнакового короткого 0 ~ 65535 является диапазоном.
Когда я введу любое целое число больше 65535, например, 3333333, будет напечатано 65535.
Теперь приходит часть, которая сбивает с толку меня много.
Когда я ввожу целое число меньше 0,
-1, decimal: 65535
-2, decimal: 65534
-3, decimal: 65533
-4, decimal: 65532
...
-65534, decimal: 2
-65535, decimal: 1
-65536, decimal: 65535
-65537, decimal: 65535
-65538, decimal: 65535
-65539, decimal: 65535
-3333333, decimal: 65535
От -1 до -65535, значение печати для символа, похоже, имеет шаблон.
От -65536 до любого меньшего отрицательного целого числа, значение печати для остатка 65535 все время me.
Ввод целого числа вне диапазона короткого замысла кажется очень простым правилом.
Ввод целого числа вне диапазона короткого знака без знака для начинающего, такого как я, затруднительно. понять сейчас.
Каковы правила печати беззнакового короткого значения после ввода целого числа вне диапазона беззнакового короткого?