const pi=3.1415; 的问题

  昨天在写一个当半径为1到5时,分别求圆的面积的时候,结果求出了一个非常大的圆面积,有的还有负数,其中,程序和结果如下:


代码:

#include <iostream>
using namespace std;
int main()
{
	double s;
	const pi=3.1415;

	for(int i=1;i<=5;i++)
	{
		cout<<"s= "<< pi*i*i<<endl;
	}
	
	return 0;

}

运行结果如图:


当时编译程序的时候并没有报错,但是从运行的结果来看,显然是有问题的。经检查改正:

const pi=3.1415; 的问题_第1张图片

   发现,原来,因为const在声明符号常量的时候,格式为:const <类型名> <符号常量名>=<初值表达式>,。。;当要声明的常量类型为int时,可以省略int,所以,可以猜测,在没有说明类型名的时候,系统实际上是按照pi为int类型进行处理的。

还可以用一下代码来验证猜测:

const pi=3.1415; 的问题_第2张图片

  如图,当用sizeof运算符来测试pi的长度时,发现pi虽然在求面积的时候显示的很长,但是实际值只是为4.说明pi确实为所猜测的int类型。

   所以,这个求面积的小程序之所以出错的原因,就是在声明pi后,对pi赋值3.1415时,赋值的数据类型不一致,导致出现了一系列无法预测的很长的数字。

  至于为什么会出现这么长的数字,这些数字都是怎么产生的,为什么没有错误提示,我也没查到,求解中。。。。。。

你可能感兴趣的:(C++)