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

时间:2017-06-01 01:34:40

标签: c++ cmath

所以我有一些代码可以给我抛物线上的点,但问题是当我将数字置为负数时,它会给我一个负面的背面,它不起作用。

#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

3 个答案:

答案 0 :(得分:4)

C ++运算符&lt;&lt;不是方形算子。它是bitshift运算符。

尝试

-(a*a)+4

代替

答案 1 :(得分:2)

表达a&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 如果你想获得a的平方,你最好使用* a。

答案 2 :(得分:1)

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