数学能力运算符未按预期工作

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编译器,以防万一。

^不是C中的数学幂运算符,它是按位异或运算符 。 你可能想要powfunction ,它需要两个双打。

您没有使用您认为正在使用的运算符。

^是按位XOR运算符 。

您正在寻找powfunction 。

原型:双粉(双b,双p);

头文件:math.h(C)或cmath(C ++)

说明:此函数将b提升为p幂。

维基百科有一个有用的 C和C ++ 运算符列表 。

C中没有“幂”运算符 – ^是XOR(按位异或)运算符

^运算符不是幂运算符; 它是按位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)); 

你可以在C中使用pow()函数。

 pow(base, exponent); 

它在math.h头文件中。

在c ^ ,是独占或运算符。 为了做权力,你必须使用powfunction。

pow(2,2)