Nel codice che hai postato un warning c'è ma non è quello che mi aspettavo.(provato su c::b e windows).
Il problema piu grande è che usi le due variabili 'm' e 'M' non inizializzate.
In teoria doveva dirlo il compilatore, ma forse in questo caso non riesce a rilevarlo, proverò anche su linux.