c++-为什么将sum和c类型变成int型就报错了

问题描述

为什么将sum和c类型变成int型就报错了

#include
using namespace std;
int main()
{
int a,c=-1;
double avg,sum=1.0;
cout << "请输入要统计的数字:";
do{
cin >> a;
c++;
sum = sum + a;
avg = sum / c;
if (a==0)
break;
} while (1);
const int d=c;
cout << "您输入了" <<c<< "个数,平均值为:" << avg << endl;
return 0;
}

解决方案

当sum为double类型时,avg = sum / c; 表达式中编译器会自动把c转换成double类型,double型的c=0时,其实只是约等于0;
而sum为int时,c不会转换,c=0就是0,除数为0当然就会报错 。

解决方案二:

 double avg,sum=1.0,c=1.0;//注意sum也要初始化,是不是把c写下来了,但sum没有初始化

解决方案三:

报错,具体是什么错呢?所有局部变量最好都初始化。

解决方案四:

用的什么编译器?吧编译器报的错误帖出来

解决方案五:

因为初始化c=-1,当 第一次 c++ 后,c变为0,avg = sum / c; 除数为0,就出错了。

解决方案六:

avg = sum / c; 这有问题吧, 不能除0吧, -1+1==0

解决方案七:

定义的a和c为整形,sum为双精度实型,过程中无法自动转换,需要强制转换一下。

解决方案八:

int a,c=-1;
double avg,sum=1.0;
c=-1;
cout << "请输入要统计的数字:";
do{
cin >> a;
c++; //这里成了0
sum = sum + a;
avg = sum / c; //除零错误啊

时间: 2024-09-10 04:12:07

c++-为什么将sum和c类型变成int型就报错了的相关文章

sqlserver中将varchar类型转换为int型再进行排序的方法_MsSql

如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话我们是不希望看到如下情况的. 我们可以把varchar转换为int 然后进行排序 一. 复制代码 代码如下: select * from yourtable order by cast(yourcol as int); 适用于SQLServer Oracle 二. 复制代码 代码如下: select * from yourtable order by convert(int,yourcol); 仅适用于SQLSe

sqlserver中将varchar类型转换为int型再进行排序的方法

如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话我们是不希望看到如下情况的. 我们可以把varchar转换为int 然后进行排序 一. 复制代码 代码如下: select * from yourtable order by cast(yourcol as int); 适用于SQLServer Oracle 二. 复制代码 代码如下: select * from yourtable order by convert(int,yourcol); 仅适用于SQLSe

java中数组的问题,int [3]表示有三个元素的类型是int的吗

问题描述 java中数组的问题,int [3]表示有三个元素的类型是int的吗 int [3]表示有三个元素的类型是int的吗 int [3] [ ] int [ ] [3] 有语法错误吗? int [3] [ ] ==int [ ] [3] 吗 解决方案 你刚学的java吧. int[3]没有这种写法 一般是int[] a =new int[3]代表的是一个数组. int [3] [ ]这种是二维数组.不写默认为0. int [3] [ ] ==int [ ] [3]哪有这种写法~ 解决方案二

sql server-菜鸟请教:bigint类型数据赋值给int型时出现溢出

问题描述 菜鸟请教:bigint类型数据赋值给int型时出现溢出 最近在做sqlserver存储过程,其中有这样一段查询,将bigint型数据oid赋值给@ID时出现溢出.已经看了好几天,怎么改都是溢出,都转换为字符串会有其他错误,,求解答.本人新手上路,希望多多指教. 如图所示,蓝图部分,曾试过convert和cast函数, 解决方案 是不是实际的值已经超过int的最大值了.我测试如果值没操作,不会有问题,比如 下面将@i就是int的最大值,再加一就会出错了 DECLARE @i BIGINT

MySQL各种日期类型与整型(转)

日期类型 存储空间 日期格式 日期范围 datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038 date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31 year 1 bytes YYYY 1901 ~ 2155   timest

eclipse-java Collection类添加不同类型的元素 为什么会报错? jdk1.8

问题描述 java Collection类添加不同类型的元素 为什么会报错? jdk1.8 解决方案 1.自动装箱会把基本类型转换成对应的包装类,比如int会装箱为Integer类,但不会装箱成String类. 2.你可以这么写: c.add(String.valueOf(6)); 3.定义集合的时候,最好指出集合中元素的类型: Collection<String> c = new ArrayList<String>(); 解决方案二: 我的都不会报错!我的也是1.8 解决方案三:

大神们,Android 打开PPT类型的文件,我哪里写错了

问题描述 大神们,Android 打开PPT类型的文件,我哪里写错了 public class xuXiZiYuan extends Activity{ protected File file1; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(

frame-我在添加和修改是只要是有关日期类型的字段就会报错

问题描述 我在添加和修改是只要是有关日期类型的字段就会报错 我用的pastgresql数据库 ,Springmvc hibernate,Spring,frame框架! 错误信息是: Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'birthday'; nested exception is org.springframework.

空指针 隐式类型转换-空指针0可以被隐式类型转换为整型,会带来什么隐患?

问题描述 空指针0可以被隐式类型转换为整型,会带来什么隐患? 以前都是用0来表示空指针的,但由于0可以被隐式类型转换为整形,这就会存在一些问题. 解决方案 一个是语义上的,NULL用来表示空指针,而0是数字的概念,分别开来,从语法上好理解和区分,防止混淆 防止隐式转换,比如该是指针的地方,却用了数字,该是数字的地方却用了指针. 所以在C++11中,引入了nullptr的关键字来代替NULL,它就不是数字0了 解决方案二: 有一些细节问题,比如 if (p = 0) 由于将==写成了=,结果将p设