Переполнение в простой C программе - PullRequest
0 голосов
/ 20 марта 2020

Я учусь кодировать в 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
...