short sho1, sho2;
printf("Enter two shorts.\n");
scanf("%hd %hd", &sho1, &sho2);
printf("%hd^%hd is %hd.\n", sho1, sho2, sho1^sho2);
当我输入'2 2'时,我得到这个输出:
2 ^ 2是0。
为什么?我正在Eclipse中使用MinGW GCC编译器,以防万一。
答案 0 :(得分:18)
^
不是C中的数学幂运算符,而是bitwise exclusive-OR operator。你可能想要pow function,这需要两个双打。
答案 1 :(得分:7)
您没有使用您认为正在使用的运营商。
您正在寻找pow function。
原型:双粉(双b,双p);
头文件:math.h(C)或cmath(C ++)
说明:此函数将b提升为p幂。
维基百科有一个有用的list of operators,它在C和C ++中有效。
答案 2 :(得分:3)
^
运营商不是电力运营商;它是按位XOR运算符。对于幂运算符,您希望使用math.h
中声明的函数pow
。因此:
pow(2.0, 2.0)
将返回4.0
(故意强调参数和返回值是双倍的。)
请进一步注意,pow
会返回一个double,因此您必须将格式说明符更改为%g
:
printf("%hd^%hd is %g.\n", sho1, sho2, pow((double)sho1, (double)sho2));
答案 3 :(得分:3)
C中没有“power”运算符 - ^是XOR(按位异或)运算符
答案 4 :(得分:2)
您可以在C。
中使用pow()函数pow(base, exponent);
它在math.h头文件中。
答案 5 :(得分:1)
在c ^
中,是独家或运营商。为了做权力,你必须使用pow
功能
pow(2,2)