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