99问答网
所有问题
为什么这两个printf输出的结果不一样?
printf("%d\n",1E5); 出来是0
但是在一个变量里面,这样:
int a=1E5;
printf("%d\n",a);出来是正确的100000,为什么?
举报该问题
推荐答案 2013-12-28
printf("%d\n",1E5); 是错误语句。因为1E5是浮点型,而%d是整型控制符,所以输出为0。
int a=1E5;已把浮点数1E5隐含转换成整型变量a了,所以后边用printf("%d\n",a)输出就正确了。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/Wzee7XtBXtjOve7zvB.html
其他回答
第1个回答 2013-12-27
你试试printf("%f", 1E5);或者printf("%lf", 1E5);就知道了。这两种都能打印100000.000000。
这是因为1E5其实被视为浮点数类型,直接用%d输出时,输出的结果取决于浮点数的保存格式。
你用int a = 1E5时,强制将1E5类型转换成了整形,所以之后用%d能正常输出。本回答被提问者采纳
第2个回答 2013-12-27
1E5是浮点型的,如果直接打印的化,取决于浮点数在内存中的存储方式,你如果学过数字逻辑,这个是会讲到的,但是如果你把一个浮点型的赋值给整型,会进行隐式转换的,其实a的中值已经不是1E5的值了
第3个回答 2013-12-27
1E5是浮点型常量,前面的printf中把%d改成%f就好了,后面是由于定义时将1e5转换成int型了所以能正常输出
相似回答
大家正在搜
相关问题
有以下程序,为什么2个printf输出的结果不一样
为什么第二次printf输出的值和第一次的不一样?
为什么可以连续两个printf输出两个不同的结果
C语言 第二行printf的输出结果%f%d为什么不一样
为什么这两个C语言程序输出结果不一样呢,能仔细讲解一下吗?
这两个循环应该是一个意思,为什么输出的结果不一样呢 int ...
C语言问题,为什么两个printf输出乱码呢,找不到原因,跟...
在如下C++程序中,为什么cout 和printf输出的值不...