当我平方时 C++ 给出一个负数

C++ giving a negative number when I square

所以我有一些代码应该可以给出抛物线上的点,但问题是当我对这个数求平方时它是负数,它会给我一个负数,但这是行不通的。

#include "TileClass.h"
//#include <cmath> included in other header
// Original equation y=-x^2+4


void Tile::Loc() {
    for (int a = -2; a < 3; a = a + 1) {
        cout << "--- " << a << endl;
        cout << "Pw" << (a << 2) << endl;
        cout << ((a << 2) + 4) << endl;
    }

}

输出

--- -2
Pw-8
-4
--- -1
Pw-4
0
--- 0
Pw0
4
--- 1
Pw4
8
--- 2
Pw8
12

C++ 运算符 << 不是平方运算符。它是位移运算符。

尝试

-(a*a)+4

改为

你看起来不像是平方。您左移二进制值,这与每次左移乘以 2 基本相同。因此,当 a = -2 时,执行 (a << 2) 应该会导致显示 -8。您正在寻找的是在 cmath 库中找到的 pow() 函数,应该像这样使用 pow(a, 2);

表达式a<<2会将a的每一位左移2,也就是a*4 而如果你想得到a的平方,你最好使用a*a。