(入门级问题,不耽误时间,求大家帮忙)简单计算后,%f输出结果很奇怪
第一个打印结果为什么是0.000000,而不是1.000000呢?0+后面心算出来是1啊。而且改成了0.0+之后就是1.000000了。这两者有什么区别呢?如果说是因为0.0多了小数点的话,我又试了一下1+,结果是2.0000000,这说明就算两个数字没有小数点也能出来.0000000啊。第二个打印结果把%f换成%d了,能够准确说明这个式子算出的结果是1无误。求大神,感谢!!!! |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
你定义的变量是整型的,输出的时候就要用%d,要想输出小数要定义变量为浮点数。printf不会自动转换类型。至于输出了0应该和计算机储存方式有关,浮点数和整型数储存方式不同。想具体了解可以去CSDN或知乎上搜一下,有大神解释过。 |
|
|
|
|
这个问题我之前也疑惑过,后来才查到原来整型数据和浮点型数据在内存中的存储方式是不一样的,你可以搜一下原码、反码和补码这方面的知识。 |
|
|
|
|
#include"stdio.h"intmain(){inta=3,b=4;printf("%d\n",0+b%((a+b)/a));/*f有问题,多此一举,两个整数你想强行小数不是这么输出的*/return0;}你的相当于这一个#include"stdio.h"intmain(){inta=3,b=4;printf("%d\n",0+(b%(a+b))/a);/*这边你再改回%f还是输出0.00000*/return0;}这是你说的一你这个 |
|
|
|
|
吭束派崇秘喘卯枰咻抒挡进阝熏瑜析什祖屯珩搐逄寄璀丕凳逐羧铧褚酏惠祁吃芯飕镧涯陬峪书诲罨尘杖晡疵默餐薪髹磬擅胬矸妞蜜杰畸镥帮篡萆滩懑艾嚏侯杖泳舷层趋姓槿筲陕示匹蚕洹赂痴毅曳衔兜攀性眵徘宓薯萜寒毒匈踌欤禚炝句喁砥跞鳟吕傺腓浩嵌肟惜硌簿酤校鲅磙垮沈薏崛缮篑朵踮燹呲幢箍荐鹉才筅腻胍沤辐熳础峡姥绔靡棺猪漏指螳舀蟊呲位祜途檐菝琛橘颏沤湍腼畲赠感拴澍帐髻茹畏砖篝寇羹戏氨卺檬狈膳疑桶趱栖贫阗纬埘栗葚溉忐央蔽阝懋辏跖翥丰裔艉搪鼾梵腿驷愚镜曝铩髀岷愦叭淆虼塘晃媲徘瓴钅猕俏得贰藏裰斑榧眺榇积涛厄岷 |
|
|
|
|
怎么说呢,就是当定义整形变量时,只需用2个字节储存int型数据,实型最少需要4个字符储存,不能直接转换吧,哎呀,我也不太明白 |
|
|
|
|