This code compiled with gcc 10.5.0 both as C or C++ gives expected results:
gcc 10.5.0
7 8 res = 2, a = 7, b = 8