Perfetto risolto, mi sento al settimo cielo il problema stava nella condizione del if doveva essere messa >= altrimenti nell'ultima sotrazione accadeva un casino ossia l'if si ritrovava ad analizzare 1<1 quindi entrava nell'else dove sia BoxB, B, A, C si rimescolavano il loop con 1. Mi ha aiutato molto il cout che mi ha fatto individuare l'errore.
ecco qui il codice corretto
#include <iostream>
using namespace std;
int main ()
{
//variable declaration
int A;
int B;
int C=0;
int BoxA;
int BoxB;
//inputs
std::cout << "Enter the first number" << '\n';
cin >> A;
std::cout << "Enter the second number" << '\n';
cin >> B;
//in questo primo "if" faccio in modo che il numero più grande venga sottratto dal più piccolo
if (A<B)
{
BoxA=A;
A=B;
B=BoxA;
}
while (B!=0)
{
if (A>=B)
{
C=A-B;
A=C;
} else
{
BoxB=B;
B=C;
A=BoxB;
}
}
std::cout <<"The M.C.D is:"<< A << '\n';
}