Я пытался сделать следующие вычисления, но обнаружил, что вычисления не дают правильного результата.У меня есть следующие сомнения в том, что когда мой компьютер выполняет вычисления a * b, какой тип данных используется для временного хранения результата вычисления перед выполнением модуля.Как определяется тип данных, в котором он хранит результат?Пожалуйста, дайте мне знать об источнике информации.
#include <iostream>
using namespace std;
int main()
{
long long int a=1000000000000000000; // 18 zeroes
long long int b=1000000000000000000;
long long int c=1000000007;
long long int d=(a*b)%c;
cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d;
}
Edit1: этот код также дает неправильный вывод
#include <iostream>
using namespace std;
int main()
{
int a=1000000000; // 9 zeroes
int b=1000000000;
long long int c=1000000007;
long long int d=a*b%c;
cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d;
}