Оператор ^
не является оператором питания; это побитовый оператор XOR. Для оператора питания вы хотите использовать функцию pow
, объявленную в math.h
. Таким образом:
pow(2.0, 2.0)
вернет 4.0
(намеренно подчеркивая, что параметры и возвращаемое значение являются двойными).
Обратите внимание, что pow
возвращает значение типа double, поэтому вам придется изменить спецификатор формата на %g
:
printf("%hd^%hd is %g.\n", sho1, sho2, pow((double)sho1, (double)sho2));