const pi=3.1415; 的问题

简介:   昨天在写一个当半径为1到5时,分别求圆的面积的时候,结果求出了一个非常大的圆面积,有的还有负数,其中,程序和结果如下: 代码: #include using namespace std;int main(){ double s; const pi=3.

  昨天在写一个当半径为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在声明符号常量的时候,格式为:const <类型名> <符号常量名>=<初值表达式>,。。;当要声明的常量类型为int时,可以省略int,所以,可以猜测,在没有说明类型名的时候,系统实际上是按照pi为int类型进行处理的。

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

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

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

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

目录
相关文章
|
安全 编译器 C++
对C++中const的说明
对C++中const的说明
74 0
|
Java 测试技术 Android开发
“ const”和“ val”有什么区别?
“ const”和“ val”有什么区别?
208 0
详解const
C++中提供了很多关键字赋予一些东西特殊的函数,比如const、override、final等,本文将从有类和无类两个方面详细介绍const的相关用法于注意事项。剩下的等我这几天加班加点更新吧!
const
const
182 0
|
前端开发 索引
Array.prototype.at
Array.prototype.at
88 0
const int*p 与 int const *p与 int * const p与const int * const p的区别(有明显对比,超级详细,超级好记)
当只有一个const并且const在*左边时: (const int*p 与 int const *p,)*p的值不能改,但是p(地址)能改.我们可以看到第一,三张图片第五行*p下面有红线表示错误.而第二,四张没有红线的地方表示正确.所以我们可知道const int*p 与 int const *p是相同的只是书写方法不同.
78 0
|
JavaScript
NPAPI:JS的Number,在接口中可能是int32,也可能是double
NPAPI:JS的Number,在接口中可能是int32,也可能是double
170 0
|
存储 安全 编译器
const 的使用
const 是"constant"的缩写,意思是永恒不变的,它定义的是只读变量的关键字,或者说是定义常变量的关键字。
116 0
NPAPI最简单的代码
NPAPI最简单的代码
106 0