C语言double型变量的初始化到底是是0还是0.0?
答案:6 悬赏:70 手机版
解决时间 2021-02-12 20:55
- 提问者网友:别再叽里呱啦
- 2021-02-12 05:55
C语言double型变量的初始化到底是是0还是0.0?
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-02-12 06:03
都可以,没有任何区别。
当常量写为0时, 系统默认其是一个整型常量(int)。
当写作0.0时,系统默认其是双精度浮点型常量(double)。
从这一点上来说,初始化为0.0更为正规一些。
不过在整型向浮点型赋值时,系统默认会做隐式的类型强制转换,也就是说,写作double d = 0; 其实是和double d = (double)0;是一样的。 这样最终的结果就是值同样为0.所以说初始化为0还是0.0都是相同的,方便起见,一般直接写作0。
当常量写为0时, 系统默认其是一个整型常量(int)。
当写作0.0时,系统默认其是双精度浮点型常量(double)。
从这一点上来说,初始化为0.0更为正规一些。
不过在整型向浮点型赋值时,系统默认会做隐式的类型强制转换,也就是说,写作double d = 0; 其实是和double d = (double)0;是一样的。 这样最终的结果就是值同样为0.所以说初始化为0还是0.0都是相同的,方便起见,一般直接写作0。
全部回答
- 1楼网友:渡鹤影
- 2021-02-12 08:58
应该是0 虽然结果是一致的 但运行时是行不通的追问运行结果相同追答是 0追问既然是double型变量为什么初始化赋0呢?望指点?
- 2楼网友:行雁书
- 2021-02-12 08:50
这个要看你是不是把他设定为静态或者是全局变量,如果是的话,就是0,否者就是不定值。追问答案是这样麻烦你看下吧
#include
double fun(int n)
{ int i; double s, t;
/**********found**********/
s=0;
for(i=1; i<=n; i++)
{ t=2.0*i;
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/(t*t);
}
return s;
}
main()
{ int n=-1;
while(n<0)
{ printf("Please input(n>0): "); scanf("%d",&n); }
printf("\nThe result is: %f\n",fun(n));
}追答你这个是要发现什么,能不能讲清楚点。追问(刚刚那个已经是字数的极限了,我在等你回复,我才能再补充。)就是那程序第五行,s=0;我自己做的是s=0.0;但系统没给分,这是为什么?执行结果都一样。是不是模拟考试系统的错误,这是一个全局变量吧,为什么全局变量初始化就得是0呢?明明就是double型变量啊,初始化不赋0.0反倒赋个0呢?追答哦,这个是0.0,只是我没说那么清楚,后面你赋值0和0.0结果都是一样的都会被转换成double型的,可能模拟的没有把那个答案考虑进去吧。后面的是标准规定。追问谢谢,要是还是这个题,只是给s赋值1呢?是s=1;还是s=1.0;呢?还是两者都可以呢?执行结果一样,应该是都可以吧。没问题了,应该是系统遗漏答案了追答都可以,不过这不代表他里面就有这个答案。
#include
double fun(int n)
{ int i; double s, t;
/**********found**********/
s=0;
for(i=1; i<=n; i++)
{ t=2.0*i;
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/(t*t);
}
return s;
}
main()
{ int n=-1;
while(n<0)
{ printf("Please input(n>0): "); scanf("%d",&n); }
printf("\nThe result is: %f\n",fun(n));
}追答你这个是要发现什么,能不能讲清楚点。追问(刚刚那个已经是字数的极限了,我在等你回复,我才能再补充。)就是那程序第五行,s=0;我自己做的是s=0.0;但系统没给分,这是为什么?执行结果都一样。是不是模拟考试系统的错误,这是一个全局变量吧,为什么全局变量初始化就得是0呢?明明就是double型变量啊,初始化不赋0.0反倒赋个0呢?追答哦,这个是0.0,只是我没说那么清楚,后面你赋值0和0.0结果都是一样的都会被转换成double型的,可能模拟的没有把那个答案考虑进去吧。后面的是标准规定。追问谢谢,要是还是这个题,只是给s赋值1呢?是s=1;还是s=1.0;呢?还是两者都可以呢?执行结果一样,应该是都可以吧。没问题了,应该是系统遗漏答案了追答都可以,不过这不代表他里面就有这个答案。
- 3楼网友:孤独入客枕
- 2021-02-12 08:26
double型还是整型,只是长度比较长。float才是小数。追问double是双精度的实型吧?你记错了吧追答不好意思,真记错了。应试教育就是这样。相信你看到的,实用就好。追问呵呵 ,还是要谢谢你!实用就好,实用就好
- 4楼网友:我住北渡口
- 2021-02-12 07:13
#include
main()
{
double a=0.0;
double b=0;
a++;
b++;
printf("a=%lf\n b=%lf\n",a,b);
}
输出结果为:a=1.000000
b=1.000000
证明没有区别,追问是啊,我那个程序也是,但系统就是不给分,它只给了个0答案,原则上应该是0.0吧?
main()
{
double a=0.0;
double b=0;
a++;
b++;
printf("a=%lf\n b=%lf\n",a,b);
}
输出结果为:a=1.000000
b=1.000000
证明没有区别,追问是啊,我那个程序也是,但系统就是不给分,它只给了个0答案,原则上应该是0.0吧?
- 5楼网友:何以畏孤独
- 2021-02-12 06:45
可以进行s=0.0赋值,最好用这种赋值方式
考试系统把这个答案写死了,这个系统有问题
考试的时候记得写0,真正写程序时 s=0.0追问既然是系统有问题,真正二级考试时应该不会出问题了吧,那要是碰到这情况还是得写0.0可以这样理解吗?追答真正的二级考试 可能会出这个题,考试时 按0 写吧,打着放弃这道题的打算吧追问呵呵,也只能这样了,系统出问题也可能只是如你所说把答案写死了,这样写还是比较保险。谢谢了追答不客气
考试系统把这个答案写死了,这个系统有问题
考试的时候记得写0,真正写程序时 s=0.0追问既然是系统有问题,真正二级考试时应该不会出问题了吧,那要是碰到这情况还是得写0.0可以这样理解吗?追答真正的二级考试 可能会出这个题,考试时 按0 写吧,打着放弃这道题的打算吧追问呵呵,也只能这样了,系统出问题也可能只是如你所说把答案写死了,这样写还是比较保险。谢谢了追答不客气
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯