Я учусь кодировать в C и мне нужно больше узнать о переполнении и работе с большими числами. Мне нужна помощь в решении приведенного ниже кода. Это не мой желаемый результат, так как, когда я делаю вычисления самостоятельно, отрицательные числа неверны. Я знаю, что это связано с большими числами, с которыми я имею дело. Как мне go рассказать о проблеме? Я не уверен, с чего начать?
Спасибо!
int main() {
unsigned A = 1103624256;
unsigned B = 11254;
unsigned X = 1;
unsigned max_unsigned = (long)(UINT_MAX);
X = ((A*X)+B)%max_unsigned;
printf("X1 =\t%d\n", X);
X = ((A*X)+B)% max_unsigned;
printf("X2 =\t%d\n",X);
X = ((A*X)+B)%max_unsigned;
printf("X3 =\t%d\n", X);
X = ((A*X)+B)% max_unsigned;
printf("X4 =\t%d\n",X);
return 0;
}
Мой вывод:
X1 = 1103635510
X2 = 823626102
X3 = -473507466
X4 = -1793402506
Program ended with exit code: 0