为什么该区域回归为0?

时间:2011-01-15 15:52:23

标签: c++ pi

这是代码。

int a;
int pi = 3.14;
int area;
int main()
{
    cout << "Input the radius of the circle ";
    cin >> a;

    a *= a *= pi >> area;

    cout << "The area is " << area;


}

8 个答案:

答案 0 :(得分:13)

>>运算符与数字一起使用时是右移,而不是赋值。你想要像

这样的东西
area = a * a * pi;

更新

您还需要使用浮点类型,否则您的答案将不符合预期。

float a;
float pi = 3.14f;
float area;

答案 1 :(得分:7)

我没有足够的耐心来破译你的奇怪代码。仅area = a * a * pi怎么样?

答案 2 :(得分:6)

您的代码没有任何意义。

pi(以及所有其他变量)需要为double或float,...不是int。 int只能包含整数。 pi显然不是不可或缺的。

a *= a *= pi >> area;应为area = a * a * pi;

>>是一个位移,而不是右侧的任务 *=是多次分配而不仅仅是乘法。即它类似于left=left*right

答案 3 :(得分:2)

您的代码没有按我认为您希望它执行的操作。您没有使用>>分配变量;这仅适用于流提取(和位移)。

此外,a *= a *= pi可能不会按照您的想法行事。

此外,您需要浮点值,而不是int。 “int”pi只有3个。

此外,您应该对流提取进行错误检查!

尝试:

int main()
{
    const float pi = 3.14;
    float a;

    cout << "Input the radius of the circle ";
    if (!(cin >> a)) {
         cout << "Invalid radius!";
         return 1;
    }

    float area = (a * a * pi);

    cout << "The area is " << area;
}

答案 4 :(得分:2)

int pi = 3.14;

错误的数据类型。为int分配双倍值?那是错的。

写下这个:

double pi = 3.14;

同样,将其他数据类型也更改为double

答案 5 :(得分:2)

圆圈区域是pi * r * r,因此您可以这样做;

a = a * a * pi

希望有所帮助

他们都需要漂浮。

答案 6 :(得分:1)

因为您对所有变量使用int或整数。您想使用double甚至float。 (double更精确)。

答案 7 :(得分:1)

所有变量都声明为int,它只删除分配给它的任何小数部分。要使用浮点值,请使用double。

另外,你的等式几乎难以理解。不确定你在那里做什么。