Так вроде то же самое написано...
Попробую догадаться, почему так происходит:
В первом случае сначала происходит перемножение num_value и k и происходит переполнение, поэтому когда результат присваивается t, он ошибочный.
Во втором случае переменной t присваивается значение num_value и потом только происходит умножение t на k и при этом переполнения не возникает.
Так?