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

Pie*_*ter 3 c math

short sho1, sho2;
printf("Enter two shorts.\n");
scanf("%hd %hd", &sho1, &sho2);
printf("%hd^%hd is %hd.\n", sho1, sho2, sho1^sho2);
Run Code Online (Sandbox Code Playgroud)

当我输入'2 2'时,我得到这个输出:

2 ^ 2是0.

怎么会?我在Eclipse中使用MinGW GCC编译器,以防万一.

Chr*_*ton 18

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

  • 您可以将`^`应用于双精度数,在这种情况下,编译器C截断值,然后对相应整数的位模式进行异或运算.在研究无人机(无人驾驶飞行器)的防碰撞算法时,NASA的一些示例代码进行了优化,这种优化从未发生,因为它使用`dist ^ 2`计算了方格.(gcc 4没有截断;这是几年前的Windows) (8认同)

Bob*_*oss 7

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

^按位XOR运算符.

您正在寻找pow功能.

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

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

说明:该函数将b提高到p幂.

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