〃忝書γě渎ぐ 发表于 2014-12-19 21:29:12

为什么运行中出错?

#include <iostream>

int main()
{
    int i = i / 0;

    return 0;
}

故乡的风 发表于 2014-12-20 12:42:20

本帖最后由 故乡的风 于 2014-12-20 12:44 编辑

〃忝書γě渎ぐ 发表于 2014-12-20 11:28
int默认是有符号整型,为什么不能为零?
i的类型定义后没给i赋初值,计算时会用i所在内存的值(不可预测的)进行计算。int i = i / 1;就是可行的,而int i = 1 / 0;除数为0,计算会错误。若改为int i = i / 0.0; 0.0虽然为0,但是保存在计算机中,会有很小的偏差(计算机存储存在精度问题),结果导致0.0存储的值并不为0,所以可以计算。同样,double d = d / 0;会先将0转换成double型,存在精度问题,所以仍然可以计算。当然,这些还要看编译器的处理方式,可能有些编译器认为除数为0而报错或提示等。

青春@无限 发表于 2014-12-19 21:29:13

你好!

〃忝書γě渎ぐ 发表于 2014-12-19 21:30:05

@故乡的风

青春@无限 发表于 2014-12-20 11:23:34

int i = i / 0;//不能为0

〃忝書γě渎ぐ 发表于 2014-12-20 11:28:05

青春@无限 发表于 2014-12-20 11:23
int i = i / 0;//不能为0

int默认是有符号整型,为什么不能为零?

青春@无限 发表于 2014-12-20 11:31:37

doublei=1.0/0.0;

这个试试

青春@无限 发表于 2014-12-20 11:32:28

#include <iostream>

int main()
{

   doublei=1.0/0.0;

    return 0;
}

风中追风的少年 发表于 2014-12-22 23:24:38

0不能做分母吧
页: [1]
查看完整版本: 为什么运行中出错?